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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |