Я новичок в android и java, но в моем самом первом приложении я вроде как играю в магазине, первое, что вы видите в магазине, а затем переходите ко второму занятию и видите весь этот список.Я построил горизонтальный ArrayList, и мне также удалось создать Cardview
второго действия, мой ArrayList является статическим, я имею в виду, что он не использует какой-либо сервер.
Моя проблема в том, как я могу отправить MainActivity
's данные через адаптер, который находится в нем на MainActivity2
.
Вот моя основная деятельность, где мои данные находятся там:
public class MainActivity extends AppCompatActivity {
private ArrayList<SectionDataModel> allSampleData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
allSampleData = new ArrayList<>();
RecyclerView recyclerView = findViewById(R.id.my_recycler_view1);
recyclerView.setHasFixedSize(true);
RecyclerViewDataAdapter adapter = new RecyclerViewDataAdapter(allSampleData, this);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(adapter);
EssentialData();
}
public void EssentialData() {
SectionDataModel Unit1 = new SectionDataModel();
Unit1.setHeaderTitle("Unit 1");
ArrayList<SingleItemModel> singleItemModels = new ArrayList<>();
singleItemModels.add(new SingleItemModel("Word ", "Pronunciation", "Example", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.soft));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
singleItemModels.add(new SingleItemModel("The Apple", "Apple Store Is Open", "Description book", R.drawable.alferet));
Unit1.setAllItemInSection(singleItemModels);
allSampleData.add(Unit1);
}
}
И мой SectionDataAdapter
, который только отэто я могу отправить данные во вторую MainActivity, потому что если я делаю это из MainActivity
, он возвращается Null:
public class SectionDataAdapter extends RecyclerView.Adapter<SectionDataAdapter.SingleItemRowHolder>{
private final Context mContext;
private ArrayList<SingleItemModel> itemModels;
//the constructor
public SectionDataAdapter(ArrayList<SingleItemModel> itemModels, Context mContext) {
this.itemModels = itemModels;
this.mContext = mContext;
}
@NonNull
@Override
public SingleItemRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_single_card, null);
SingleItemRowHolder singleItemRowHolder = new SingleItemRowHolder(view);
return singleItemRowHolder;
}
@Override
public void onBindViewHolder(@NonNull SingleItemRowHolder holder, int position) {
SingleItemModel itemModel = itemModels.get(position);
holder.tvTitle.setText(itemModel.getWord());
holder.mitemImage.setImageResource(itemModel.getImage());
}
@Override
public int getItemCount() {return (null != itemModels ? itemModels.size() : 0);}
public class SingleItemRowHolder extends RecyclerView.ViewHolder {
protected TextView tvTitle;
protected ImageView mitemImage;
public SingleItemRowHolder(final View itemView) {
super(itemView);
//Intent to start next activity
final Intent intent = new Intent(mContext, ActivityDialogTheme.class);
final Intent intent1 = new Intent(mContext, MainActivity2.class);
final Activity activity = (Activity) mContext;
this.mitemImage = itemView.findViewById(R.id.itemImage);
this.tvTitle = itemView.findViewById(R.id.tvTitle);
itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(v.getContext(), tvTitle.getText(), LENGTH_SHORT).show();
//passing data to Tab1Fragment
mContext.startActivity(intent1);
}
});
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(mContext,tvTitle.getText(), Toast.LENGTH_SHORT).show();
mContext.startActivity(intent);
//appearing animation
activity.overridePendingTransition(R.anim.bottom_in, R.anim.fade_in_right);
return true;
}
});
}
}
}
MainActivity2 содержит 3 вкладки, в одной из которых мне тоже нужно получить их, потому что яобъявленный фрагмент всех вкладок и функция фрагмента каждой вкладки аналогичны адаптеру MainActivity (SectionDataAdapter), который будет отображать элементы ArrayLists.Это означает, что я должен также получить ArrayList of MainActivity во всех фрагментах.
вот мой Tab1Fragment:
public class Tab1Fragment extends Fragment {
public Tab1Fragment() {
// Required empty public constructor
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab1_fragment, container, false);
return view;
}
}
и, конечно же, мой RecyclerViewAdapter
, который показывает элементы ArrayLaists
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder0> {
private Context mContext ;
private ArrayList<SingleItemModel> mData ;
//the constructor
public RecyclerViewAdapter(Context mContext, ArrayList<SingleItemModel> mData) {
this.mContext = mContext;
this.mData = mData;
}
@NonNull
@Override
public MyViewHolder0 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
LayoutInflater mInflater = LayoutInflater.from(mContext);
view = mInflater.inflate(R.layout.cardview_item_book, parent, false);
return new MyViewHolder0(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder0 holder, final int position) {
holder.tv_book_title.setText(mData.get(position).getWord());
holder.img_book_thumbnail.setImageResource(mData.get(position).getImage());
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext,Book_Activity.class);
// passing data to the book activity
//intent.putExtra("key_Word",value);
intent.putExtra("Word",mData.get(position).getWord());
intent.putExtra("Pronunciation",mData.get(position).getPronunciation());
intent.putExtra("Examples&Explanation",mData.get(position).getExamples());
//intent.putExtra("Definition",mData.get(position).getDefinition());
intent.putExtra("WordImage",mData.get(position).getImage());
// start the activity
mContext.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return mData.size();
}
public static class MyViewHolder0 extends RecyclerView.ViewHolder {
TextView tv_book_title;
ImageView img_book_thumbnail;
CardView cardView ;
public MyViewHolder0(View itemView) {
super(itemView);
tv_book_title = itemView.findViewById(R.id.book_title_id) ;
img_book_thumbnail = itemView.findViewById(R.id.book_img_id);
cardView = itemView.findViewById(R.id.cardview_id);
}
}
}
кто-нибудь, помогите мне! ..