Как получить щелчок по указанной кнопке в arrayadapter? - PullRequest
0 голосов
/ 24 декабря 2018

Я новичок в Android, в моем случае теперь у меня есть адаптер массива, который отображает список флажков продукта, который содержит textview "-", textview "0" и textview "+".Моя проблема, когда я хочу нажать «+» или «-», но измененное значение textview «0» находится в списке других флажков.

Может кто-нибудь помочь мне решить мою проблему?Мне действительно нужна помощь, потому что я пробовал это в течение 2 дней и до сих пор ничего не получил.Я все еще не могу получить идентификатор или позицию из массива списка, на который я нажал.

Я пробовал это решение и установил значение с помощью метода вызова changeCheckBox:

        viewHolder.increase.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                countcheckBox++;
                changeCheckBox();
                produk.hitung();
            }
        });

        viewHolder.decrease.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                countcheckBox++;
                changeCheckBox();
                produk.hitung();
            }
        });

        public void changeCheckBox(){
            viewHolder.count.setText(countcheckBox+"");
        }

Иэто мой полный код:

public class CheckboxAdapter extends BaseAdapter {
private Context activity;
private ArrayList<ProductModel> productItems;
private static LayoutInflater inflater = null;
private View vi;
private ViewHolder viewHolder;
ProdukLaundry produk;
public int countcheckBox = 0;

 public CheckboxAdapter(Context context, ArrayList<ProductModel> items, ProdukLaundry produk) {
    this.activity      = context;
    this.productItems  = items;
    this.produk        = produk;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    return productItems.size();
}

@Override
public Object getItem(int i) {
    return i;
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(final int position, View view, ViewGroup parent) {
    vi = view;
    final int pos = position;
    ProductModel items = productItems.get(pos);

    if(view == null) {
        vi                  = inflater.inflate(R.layout.list_produk, null);
        viewHolder          = new ViewHolder();
        viewHolder.checkBox = (CheckBox) vi.findViewById(R.id.checkBox_productName);
        viewHolder.decrease = (TextView) vi.findViewById(R.id.decrease_product);
        viewHolder.count    = (TextView) vi.findViewById(R.id.count_product);
        viewHolder.increase = (TextView) vi.findViewById(R.id.increase_product);
        viewHolder.price    = (TextView) vi.findViewById(R.id.product_price);
        vi.setTag(viewHolder);
        viewHolder.checkBox.setText(items.getProduct_name());
        viewHolder.price.setText(items.getProduct_price());

        viewHolder.increase.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                countcheckBox++;
                changeCheckBox();
                produk.hitung();
            }
        });

        viewHolder.decrease.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                countcheckBox++;
                changeCheckBox();
                produk.hitung();
            }
        });
    }else{
        viewHolder = (ViewHolder) view.getTag();
        viewHolder.checkBox.setText(items.getProduct_name());
        viewHolder.price.setText(items.getProduct_price());
    }
    if(items.isCheckbox()){
        viewHolder.checkBox.setChecked(true);
    } else {
        viewHolder.checkBox.setChecked(false);
    }

    return vi;
}

public void changeCheckBox(){
        viewHolder.count.setText(countcheckBox+"");
}

public ArrayList<ProductModel> getAllData(){
    return productItems;
}

public void setCheckBox(int position){
    ProductModel items = productItems.get(position);
    items.setCheckbox(!items.isCheckbox());
    notifyDataSetChanged();
}

public class ViewHolder{
    TextView decrease, count, increase, price;
    CheckBox checkBox;
}

}

То, что я ожидал, это то, когда я нажимаю кнопку «+» или «-», значение textview, которое изменяется, находится в списке, которыйкнопка нажата.

...