Я новичок в 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, которое изменяется, находится в списке, которыйкнопка нажата.