您的位置:首页 > 移动开发 > Android开发

android 中listview控件重用问题

2014-01-14 20:21 155 查看

做一个自定义的Dialog,里面就放了一个ListView,listview的item就是一个TextView,效果图如上,选择的item用红色显示。

我的思路是将选择的position保存,用SharedPreferences进行保存,然后在getView方法里面做判断

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

convertView = LayoutInflater.from(context).inflate(

R.layout.jiriquery_dialog_lv_item, null);

holder = new ViewHolder();

holder.text = (TextView) convertView

.findViewById(R.id.jiriquery_lv_item_text);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.text.setTag(position);

holder.text.setText(this.list.get(position));

if (PreferenceUtil.getJiRiQueryDataPosition(context) == position) {

holder.text.setTextColor(context.getResources().getColor(

R.color.red));

holder.text.setBackgroundColor(context.getResources().getColor(

R.color.calendar_today_backgroud));

} else {

holder.text.setTextColor(context.getResources().getColor(

R.color.zodiac_content_second_title));

holder.text.setBackgroundColor(context.getResources().getColor(

R.color.white));

}

return convertView;

}

PreferenceUtil 是保存item的position的工具类,

if (PreferenceUtil.getJiRiQueryDataPosition(context) == position) {

holder.text.setTextColor(context.getResources().getColor(

R.color.red));

holder.text.setBackgroundColor(context.getResources().getColor(

R.color.calendar_today_backgroud));

} else {

holder.text.setTextColor(context.getResources().getColor(

R.color.zodiac_content_second_title));

holder.text.setBackgroundColor(context.getResources().getColor(

R.color.white));

}

这里一定要加else ,否则控件重用的话会导致多个item现在红色,切记。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: