[英]Adapter getView() with Listener inside
我为此创建了一个GridView和一个适配器。 在getView()方法中,我这样做了:
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder = new RecordHolder();
final Sticker sticker = data.get(position);
if (convertView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
viewHolder.count = sticker.getAmount();
viewHolder.textViewNumber = (TextView) convertView.findViewById(R.id.textViewNumber);
viewHolder.textViewQuantity = (TextView) convertView.findViewById(R.id.textViewQuantity);
viewHolder.iv_logo_card = (ImageView) convertView.findViewById(R.id.iv_logo_card);
viewHolder.buttonAdd = (ImageButton) convertView.findViewById(R.id.buttonAdd);
viewHolder.buttonRemove = (ImageButton) convertView.findViewById(R.id.buttonRemove);
viewHolder.textViewQuantity.setText(sticker.getAmount().toString());
paintQuantity(viewHolder.count, viewHolder, context);
convertView.setTag(viewHolder);
} else {
viewHolder = (RecordHolder) convertView.getTag();
}
viewHolder.buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewHolder.count != 99) {
viewHolder.count++;
}
sticker.setAmount(viewHolder.count);
StickerBusinessService.saveSticker(sticker);
viewHolder.textViewQuantity.setText(sticker.getAmount().toString());
paintQuantity(viewHolder.count, viewHolder, context);
}
});
在此方法中编写.setOnClickListener是否正确? 存在更好的方法吗?
您可以为每个视图设置一次单击侦听器,而不是每次调用getView()一次。 您还应该考虑是否要在GridView中使用按钮,因为通常用户只需单击整个View即可执行操作。
if (convertView == null) {
// add listener here
}
试试这个教程http://www.androidhive.info/2014/07/android-custom-listview-with-image-and-text-using-volley/只需将列表视图替换为网格视图,希望对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.