gpt4 book ai didi

java - 如何在可扩展 ListView 适配器的 getChildView() 中增加和减少点击监听器中的计数值?

转载 作者:行者123 更新时间:2023-11-30 10:59:45 25 4
gpt4 key购买 nike

我在可扩展 ListView “减号”和“加号”的 subview 中有两个按钮。我只需要增加变量的计数(比如 int count=0)。如果我将此变量保留在适配器的全局变量上,它将对组项的所有子项采用相同的计数。然后我将变量保存在 getChildView() 中作为局部变量,计数的递增或递减可以在两个按钮减号和加号的点击监听器内完成,显然将变量更改为最终的。我们知道最终变量值无法更改。

我对如何执行此操作感到很困惑,有没有我不知道的最佳方法,这是我的代码。可扩展 ListView 适配器类:

获取 subview 方法:

 public View getChildView(int groupPosition,  int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {

ExChildModel model=(ExChildModel) getChild(groupPosition, childPosition);

if (convertView == null) {
convertView = inf.inflate(R.layout.pro_items, null);
}

RelativeLayout rl_main=(RelativeLayout)convertView.findViewById(R.id.rl_main);
RelativeLayout rl_color=(RelativeLayout)convertView.findViewById(R.id.rl_color);
LinearLayout ll_text=(LinearLayout)convertView.findViewById(R.id.ll_text);
LinearLayout ll_add=(LinearLayout)convertView.findViewById(R.id.ll_add);
TextView tv_subtitle=(TextView)convertView.findViewById(R.id.tv_subtitle);
TextView tv_sub=(TextView)convertView.findViewById(R.id.tv_sub);
final TextView tv_cost=(TextView)convertView.findViewById(R.id.tv_cost);
final TextView tv_number=(TextView)convertView.findViewById(R.id.tv_number);
ImageView iv_minus=(ImageView)convertView.findViewById(R.id.iv_minus);
ImageView iv_plus=(ImageView)convertView.findViewById(R.id.iv_plus);

tv_subtitle.setTypeface(gotham_book);
tv_sub.setTypeface(gotham_light);
tv_cost.setTypeface(gotham_book);
tv_number.setTypeface(gotham_book);

tv_subtitle.setText(model.getHeader());
tv_sub.setText(model.getDescription());
tv_cost.setText(Constants.currency+model.getPrice());


final int price=Integer.parseInt(model.getPrice());


iv_minus.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (count!=0) {
count--;
tv_number.setText(String.valueOf(count));
FragmentMenu.tv_count.setText(String.valueOf(count));
int total=count*price;
FragmentMenu.tv_cart_money.setText(Constants.currency+String.valueOf(total));

}else {
FragmentMenu.tv_count.setVisibility(View.INVISIBLE);
FragmentMenu.tv_cart_money.setText(Constants.currency+"0");
}
}
});

iv_plus.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if (count>=0&&count!=99) {
count++;
tv_number.setText(String.valueOf(count));
FragmentMenu.tv_count.setVisibility(View.VISIBLE);
FragmentMenu.tv_count.setText(String.valueOf(count));
int total=count*price;
FragmentMenu.tv_cart_money.setText(Constants.currency+String.valueOf(total));
}
}
});

return convertView;
}

最佳答案

如果一切都失败了,您可以定义一个大小为 1 的最终数组。然后您可以从内部类更改它的值。比如;

final int count[] = {1};
new OnClickListener() {

@Override
public void onClick(View v) {
count[0]++; //this works.
}
}

关于java - 如何在可扩展 ListView 适配器的 getChildView() 中增加和减少点击监听器中的计数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31805542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com