繁体   English   中英

带有侦听器的适配器getView()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM