Опитвам се да разбера как бих показал данните от пакета, които имам в моя фрагмент, и да ги покажа в RecyclerView. В метода onClick на моята дейност получавам входните данни от потребителя и увивам стойностите в пакет. След това го изпращам на фрагмента, за да се покаже в RecyclerView. Малко съм объркан как бих направил настройката на моя RecyclerView Adapter за показване на данните от пакета Всяка помощ ще бъде много оценена. Мога да покажа данни в recyclerview, но мога да покажа само 1 елемент, искам да покажа повече елемент, когато изпращам данни от дейност към фрагмент.
Това е моят фрагмент
public class BlankFragment extends Fragment {
List<Mydata> mydataList = new ArrayList<>();
public BlankFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View vi = inflater.inflate(R.layout.fragment_blank, container, false);
RecyclerView recyclerView = vi.findViewById(R.id.recyclerShop);
Bundle extras = this.getArguments();
if(extras != null)
{
String nameExtra = extras.getString("name");
String amountExtra = extras.getString("color");
//Just add your data in list
Mydata mydata = new Mydata(); // object of Model Class
mydata.setAmountExtra(amountExtra );
mydata.setNameExtra(nameExtra);
mydataList.add(mydata);
}
MyAdapter myAdapter = new MyAdapter(getContext());
myAdapter.setMyDataList(mydataList);
recyclerView.setAdapter(myAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return vi;
}
}
Ето го адаптер
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<Mydata> myDataList;
public MyAdapter(Context context) {
this.context = context;
myDataList = new ArrayList<>();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Replace with your layout
View view = LayoutInflater.from(context).inflate(R.layout.shop_item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// Set Your Data here to yout Layout Components..
holder.tvName.setText(myDataList.get(position).getNameExtra());
holder.tvColor.setText(myDataList.get(position).getAmountExtra());
// to get Amount
// myDataList.get(position).getAmountExtra();
}
@Override
public int getItemCount() {
if (myDataList.size() != 0) {
// return Size of List if not empty!
return myDataList.size();
}
return 0;
}
public void setMyDataList(List<Mydata> myDataList) {
// getting list from Fragment.
this.myDataList = myDataList;
notifyDataSetChanged();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageShop;
TextView tvName,tvColor,tvamount;
EditText etBodySize,etAllAmount;
public ViewHolder(View itemView) {
super(itemView);
imageShop = itemView.findViewById(R.id.imgShop);
tvName = itemView.findViewById(R.id.tvClothesName);
tvColor =itemView.findViewById(R.id.tvColor);
tvamount = itemView.findViewById(R.id.tvfiyat);
etBodySize = itemView.findViewById(R.id.etAmount);
etAllAmount = itemView.findViewById(R.id.etAllAmount);
// itemView.findViewById
}
}
}
Накрая тук е класът MyData
public class Mydata {
String nameExtra;
String amountExtra;
public Mydata(String nameExtra, String amountExtra) {
this.nameExtra = nameExtra;
this.amountExtra = amountExtra;
}
public Mydata() {
}
public String getAmountExtra() {
return amountExtra;
}
public void setAmountExtra(String amountExtra) {
this.amountExtra = amountExtra;
}
public String getNameExtra() {
return nameExtra;
}
public void setNameExtra(String nameExtra) {
this.nameExtra = nameExtra;
}
}
След това, когато изпращам данни и отварям фрагмент
blankFragment = new BlankFragment();
Bundle bundle = new Bundle();
bundle.putString("name",clothesRecycler.data.get(position).getName());
bundle.putString("color",clothesRecycler.data.get(position).getColor());
blankFragment.setArguments(bundle);
manager = getSupportFragmentManager();
manager.beginTransaction().add(R.id.container,blankFragment).addToBackStack(null).commit();