大佬教程收集整理的这篇文章主要介绍了Android:使用onClick在ListView行中更改按钮背景,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我点击一个按钮时,它正确地设置了按钮背景,我的问题是当我滚动列表时,它也为不同的行设置它.我认为他们的问题在哪里回收.
这是我的代码:
@Override public View getView(int position,View convertView,ViewGroup parent){ if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.todays_SALEs_favorite_row,null); holder.favCatBtn = (Button)convertView.findViewById(R.id.favCatBtn); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.favCatBtn.setTag(position); holder.favCatBtn.setOnClickListener(this); return convertView; } @Override public void onClick(View v) { int pos = (Integer) v.getTag(); Log.d(tag,"Button row pos click: " + pos); RelativeLayout rl = (RelativeLayout)v.getParent(); holder.favCatBtn = (Button)rl.getChildAt(0); holder.favCatBtn.setBACkgroundresource(R.drawable.icon_yellow_star_largE); }
因此,如果我点击行位置1处的按钮,按钮背景会发生变化.但是当我随机向下滚动列表时,其他按钮也会被设置.然后有时当我向后滚动到位置1时,按钮背景将再次恢复为原始状态.
我在这里想念的是什么?我知道我就在那里它只是一些我不做的小事.
private final Boolean[] mHighlightedPositions = new Boolean[NUM_OF_ITEMS]; @Override public View getView(int position,ViewGroup parent){ if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.todays_SALEs_favorite_row,null); holder.favCatBtn = (Button)convertView.findViewById(R.id.favCatBtn); holder.favCatBtn.setOnClickListener(this); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); } holder.favCatBtn.setTag(position); if(mHighlightedPositions[position]) { holder.favCatBtn.setBACkgroundresource(R.drawable.icon_yellow_star_largE); }else { holder.favCatBtn.setBACkgroundresource(0); } return convertView; } @Override public void onClick(View view) { int position = (Integer)view.getTag(); Log.d(tag,"Button row pos click: " + position); // Toggle BACkground resource RelativeLayout layout = (RelativeLayout)view.getParent(); Button button = (Button)layout.getChildAt(0); if(mHighlightedPositions[position]) { button.setBACkgroundresource(0); mHighlightedPositions[position] = false; }else { button.setBACkgroundresource(R.drawable.icon_yellow_star_largE); mHighlightedPositions[position] = true; } }
以上是大佬教程为你收集整理的Android:使用onClick在ListView行中更改按钮背景全部内容,希望文章能够帮你解决Android:使用onClick在ListView行中更改按钮背景所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。