加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在Custom Listview Adapter android中制作ViewHolder fi

发布时间:2020-12-15 05:01:06 所属栏目:Java 来源:网络整理
导读:我有一个listView与这样的自定义适配器 @Overridepublic View getView(int position,View convertView,ViewGroup parent) { View view = convertView; ViewHolder viewHolder = new ViewHolder(); if (convertView == null) { view = inflator.inflate(R.lay
我有一个listView与这样的自定义适配器

@Override
public View getView(int position,View convertView,ViewGroup parent) 
{       
    View view = convertView;
    ViewHolder viewHolder = new ViewHolder();

    if (convertView == null)
    {
        view = inflator.inflate(R.layout.question_adapter_layout,parent,false);
        viewHolder.moreLayout = (LinearLayout) view.findViewById(R.id.extraOptions);

        viewHolder.reportBtn   = (Button) view.findViewById(R.id.more_report);
        viewHolder.twitterBtn  = (Button) view.findViewById(R.id.more_twitter);
        viewHolder.googleBtn   = (Button) view.findViewById(R.id.more_google);
        viewHolder.fbBtn       = (Button) view.findViewById(R.id.more_fb);
        viewHolder.deleteBtn   = (Button) view.findViewById(R.id.more_delete);

        view.setTag(viewHolder);
    }
    else
        viewHolder = (ViewHolder) view.getTag();

    viewHolder.moreBtn.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            Utilities.vibrate(mContext);
            if (viewHolder.moreLayout.getVisibility() == View.GONE)
                viewHolder.moreLayout.setVisibility(View.VISIBLE);
            else
                viewHolder.moreLayout.setVisibility(View.GONE);
        }
    });

现在更改onClickListener中的任何内容i-e viewHolder.moreLayout.setVisibility(View.GONE);我需要使viewHolder最终,但后来我将无法执行viewHolder =(ViewHolder)view.getTag();

我该如何解决这个问题?

解决方法

将其分配给setOnClickListener之前的最终字段

final ViewHolder viewHolderFinal = viewHolder;
viewHolder.moreBtn.setOnClickListener(new View.OnClickListener()

并在onClickListener中使用viewHolderFinal

每次调用getView时都可以避免创建新的ViewHolder.

ViewHolder viewHolder = null;

    if (convertView == null)
    {
      viewHolder = new ViewHolder();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读