出现该问题原因为在设置每个条目的值的时候,将设定值的代码放在了判断语句里面,导致有些条目会重复。对list不清楚导致的错误。特标记之。
错误代码如下,设置应用名称下面的几行值,实践证明,他们的赋值需要在判断条件以外:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i(TAG, "getView position = " + position);
ViewHolder viewHolder = new ViewHolder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.apps_list_item, null);
viewHolder.cb_installed = (CheckBox) convertView
.findViewById(R.id.cb_checkedApp);
viewHolder.iv_appIcon = (ImageView) convertView
.findViewById(R.id.iv_app_icon);
viewHolder.tv_appName = (TextView) convertView
.findViewById(R.id.tv_app_name);
// 设置应用名称
String mAppName = mData.get(position);
Log.i("new", "position " + position + " mAppName = " + mAppName);
viewHolder.iv_appIcon.setImageResource(R.drawable.ic_launcher);
viewHolder.tv_appName.setText(mAppName);
viewHolder.cb_installed.setChecked(isSelected.get(position));
convertView.setTag(viewHolder);
}else
{
viewHolder = (ViewHolder)convertView.getTag();
}
return convertView;
}将这些赋值放在外面,修改如下,正常了。
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i(TAG, "getView position = " + position);
ViewHolder viewHolder = new ViewHolder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.apps_list_item, null);
viewHolder.cb_installed = (CheckBox) convertView
.findViewById(R.id.cb_checkedApp);
viewHolder.iv_appIcon = (ImageView) convertView
.findViewById(R.id.iv_app_icon);
viewHolder.tv_appName = (TextView) convertView
.findViewById(R.id.tv_app_name);
convertView.setTag(viewHolder);
}else
{
viewHolder = (ViewHolder)convertView.getTag();
}
// 设置应用名称
String mAppName = mData.get(position);
Log.i("new", "position " + position + " mAppName = " + mAppName);
viewHolder.iv_appIcon.setImageResource(R.drawable.ic_launcher);
viewHolder.tv_appName.setText(mAppName);
viewHolder.cb_installed.setChecked(isSelected.get(position));
return convertView;
}

本文解决了一个关于ListView中项重复显示的问题。原因在于设置了项值的代码被错误地放置在了判断语句内部,导致某些项被多次设置。通过调整代码结构,将赋值操作移出判断条件之外,实现了正确显示。
324

被折叠的 条评论
为什么被折叠?



