Вот несколько изображений
Элемент в RecyclerView с CHECKBOX
Несколько списков
У меня есть несколько списков, которые можно создавать динамически, и есть один ArrayList из Texte2 с именем itemTexte, который включает в себя все элементы во всех списках вместе, и есть второй ArrayList с именем itemTexte2, который включает только элементы фактического списка.
Мой вопрос теперь таков: как мне работать с флажками в нескольких списках ?Потому что моя обработка неверна.
public class Texte2 {
int listId;
String table;
String product;
int state;
public Texte2(int listId, String table, String product, int state){
setListId(listId);
setTable(table);
setProduct(product);
setState(state);
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public int getListId() {
return listId;
}
public void setListId(int listId) {
this.listId = listId;
}
public String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
}
> Here is the RvAdapterKlasse, which handles also the **CHECKBOXES**
public class RvAdapterKlasse extends RecyclerView.Adapter<RvAdapterKlasse.ViewHolderKlasse> {
//Classes
DatabaseHelper mDatabaseHelper;
public class ViewHolderKlasse extends RecyclerView.ViewHolder {
TextView itemTextView, unitItemTextView;
ImageView itemImageView;
CheckBox checkBox;
public ViewHolderKlasse(@NonNull final View itemView) {
super(itemView);
mDatabaseHelper = new DatabaseHelper(itemView.getContext());
itemTextView = itemView.findViewById(R.id.textViewItem);
itemImageView = itemView.findViewById(R.id.imageViewItem);
unitItemTextView = itemView.findViewById(R.id.unitTextViewItem);
checkBox = itemView.findViewById(R.id.checkBox);
}
}
@NonNull
@Override
public ViewHolderKlasse onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView1 = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_layout1, null);
return new ViewHolderKlasse(itemView1);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolderKlasse viewHolderKlasse, final int i) {
Iterator iterator = MainActivity.itemTexte2.keySet().iterator();
ArrayList arrayList0 = new ArrayList();
while (iterator.hasNext()){
arrayList0.add(iterator.next());
}
viewHolderKlasse.itemTextView.setText(arrayList0.get(i).toString());
viewHolderKlasse.unitItemTextView.setText(itemSecondTexte2.get(i).toString());
viewHolderKlasse.itemImageView.setImageResource(itemFotoIDs2.get(i));
Iterator iterator1 = MainActivity.itemTexte.iterator();
ArrayList elemente = new ArrayList();
while (iterator1.hasNext()){
Texte2 texte2 = (Texte2) iterator1.next();
if(texte2.getTable().equals(MainActivity.listTextView.getText().toString())){
elemente.add(texte2.getListId());
}
}
for(int m = 0; m < elemente.size(); m++){
if((int) elemente.get(m) == mDatabaseHelper.getProductId(arrayList0.get(i).toString())){
Texte2 texte2 = itemTexte.get(m);
int state = texte2.getState();
if(state == 0){
viewHolderKlasse.checkBox.setChecked(false);
}else{
viewHolderKlasse.checkBox.setChecked(true);
}
}
}
viewHolderKlasse.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), DetailsActivity.class);
Iterator iterator = MainActivity.itemTexte2.keySet().iterator();
ArrayList arrayList = new ArrayList();
while (iterator.hasNext()){
arrayList.add(iterator.next());
}
String productString = arrayList.get(i).toString();
String price = "";
String lastPurchase = "";
String amount = "";
String unit = "";
Product product = new Product(productString);
for(Product p : MainActivity.product_Arr){
if(product.equals(p)){
price = p.getProduct_price();
lastPurchase = p.getProductDate();
String amountUnitArr[] = MainActivity.itemSecondTexte2.get(i).split(" ");
amount = amountUnitArr[0];
unit = amountUnitArr[1];
}
}
intent.putExtra("product", arrayList0.get(i).toString());
intent.putExtra("id", i);
intent.putExtra("price", price);
intent.putExtra("lastPurchase", lastPurchase);
intent.putExtra("amount", amount);
intent.putExtra("unit", unit);
v.getContext().startActivity(intent);
}
});
viewHolderKlasse.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Intent intent = new Intent(v.getContext(), PriceActivity.class);
String text = ((TextView) MainActivity.recyclerView1.findViewHolderForAdapterPosition(i).itemView.findViewById(R.id.textViewItem)).getText().toString().trim();
intent.putExtra("product", text);
v.getContext().startActivity(intent);
return false;
}
});
viewHolderKlasse.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Iterator iterator = MainActivity.itemTexte2.keySet().iterator();
ArrayList arrayList = new ArrayList();
while (iterator.hasNext()){
arrayList.add(iterator.next());
}
int productId = mDatabaseHelper.getProductId(arrayList.get(i).toString());
if(isChecked){
mDatabaseHelper.updateListState(productId, 1);
for (int i1 = 0; i1 < MainActivity.itemTexte.size(); i1++){
if(MainActivity.itemTexte.get(i1).getProduct().equals(viewHolderKlasse.itemTextView.getText().toString())){
MainActivity.itemTexte.get(i1).setState(1);
}
}
//
}else{
mDatabaseHelper.updateListState(productId, 0);
for (int i2 = 0; i2 < MainActivity.itemTexte.size(); i2++){
if(MainActivity.itemTexte.get(i2).getProduct().equals(viewHolderKlasse.itemTextView.getText().toString())){
MainActivity.itemTexte.get(i2).setState(0);
}
}
}
}
});
}
@Override
public int getItemCount() {
return itemTexte2.size();
}
}
Этот класс вызывается при каждом переключении между списками (Изображение 2) , и он вставляет элементы из itemTexte, которые принадлежат выбранному списку, в itemTexte2
public class RecyclerAdapter extends RecyclerView.Adapter <RecyclerAdapter.RecyclerViewHolder>{
ArrayList<String> arrayList = new ArrayList<>();
View view;
public RecyclerAdapter(ArrayList<String> arrayList){
this.arrayList = arrayList;
}
@Override
public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_layout, viewGroup, false);
RecyclerViewHolder viewHolder = new RecyclerViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder recyclerViewHolder, int i) {
recyclerViewHolder.textView.setText(arrayList.get(i));
recyclerViewHolder.imageView.setImageResource(R.color.colorAccent);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.itemTexte2.clear();
MainActivity.itemSecondTexte2.clear();
MainActivity.itemFotoIDs2.clear();
MainActivity.listTextView.setText(arrayList.get(i));
MainActivity.rvadapter1.notifyDataSetChanged();
MainActivity.listIdText.setText(String.valueOf(MainActivity.arrayIds.get(i)));
Iterator iterator1 = MainActivity.itemTexte.iterator();
Iterator iterator2 = MainActivity.itemSecondTexte.iterator();
Iterator iterator3 = MainActivity.itemFotoIDs.iterator();
while (iterator1.hasNext()){
Texte2 texte2 = (Texte2) iterator1.next();
//Toast.makeText(v.getContext(), iterator.next().toString(), Toast.LENGTH_SHORT).show();
if(texte2.getTable().equals(MainActivity.listTextView.getText().toString())){
MainActivity.itemTexte2.put(texte2.getProduct(), texte2.getState());
}
}
while (iterator2.hasNext()){
SecondTexte2 secondTexte2 = (SecondTexte2) iterator2.next();
//Toast.makeText(v.getContext(), iterator.next().toString(), Toast.LENGTH_SHORT).show();
if(secondTexte2.getTable().equals(MainActivity.listTextView.getText().toString())){
MainActivity.itemSecondTexte2.add(secondTexte2.getUnit());
}
}
while (iterator3.hasNext()){
FotoIdTexte2 fotoIdTexte2 = (FotoIdTexte2) iterator3.next();
//Toast.makeText(v.getContext(), iterator.next().toString(), Toast.LENGTH_SHORT).show();
if(fotoIdTexte2.getTable().equals(MainActivity.listTextView.getText().toString())){
MainActivity.itemFotoIDs2.add(fotoIdTexte2.getFotoId());
}
}
MainActivity.rvadapter1.notifyDataSetChanged();
MainActivity.drawerLayout.closeDrawer(Gravity.START);
}
});
}
@Override
public int getItemCount() {
return MainActivity.arrayList.size();
}
public static class RecyclerViewHolder extends RecyclerView.ViewHolder
{
TextView textView;
ImageView imageView;
public RecyclerViewHolder(View view) {
super(view);
textView = view.findViewById(R.id.tx_item);
imageView = view.findViewById(R.id.iv);
}
}
}