[英]Cannot Highlight as default ListView items based on ArrayAdapter and ViewHolder in Android
我有一个ListView,我想从SQLite获取保存的选择并将其显示为突出显示的选项,以便用户更新他的选择。
到目前为止,我在列表中获取了值,并使用以下方法在列表视图中获取了它们的对应位置:
int ItemPos = mAdapter.getPosition(Alist.get(i).toString());
mAdapter.toggleSelection(ItemPos);
我的适配器如下:
public View getView(int position, View view, ViewGroup parent) {
if (view == null)
{
holder = new ViewHolder();
view = inflater.inflate(R.layout.list_item, null);
holder.itemName = (TextView) view.findViewById(R.id.txtAnswer);
view.setTag(holder);
} else
{
holder = (ViewHolder) view.getTag();
}
holder.itemName.setText(list.get(position));
return view;
}
public void toggleSelection(int position){
selectView(position, !mSelectedItemsIds.get(position));
}
public void selectView(int position, boolean value) {
if (value) {
mSelectedItemsIds.put(position, value);
holder.itemName.setBackgroundColor(Color.parseColor("#FJFJFJ"));
}
else{
mSelectedItemsIds.delete(position);
}
notifyDataSetChanged();
}
当我运行这个我明白了
Attempt to read from field 'android.widget.TextView.AnswerListAdapter$ViewHolder.itemName' on a null object reference
如何更改物品的颜色?
谢谢
在适配器中传递布尔值的数据数组,并在活动中设置其值代替以下两行
int ItemPos = mAdapter.getPosition(Alist.get(i).toString());
mAdapter.toggleSelection(ItemPos);
如下修改getView
public View getView(int position, View view, ViewGroup parent) {
if (view == null)
{
holder = new ViewHolder();
view = inflater.inflate(R.layout.list_item, null);
holder.itemName = (TextView) view.findViewById(R.id.txtAnswer);
view.setTag(holder);
} else
{
holder = (ViewHolder) view.getTag();
}
if(data.get(position))
holder.itemName.setBackgroundColor(Color.parseColor("#FJFJFJ"));
else
holder.itemName.setBackgroundColor(Color.parseColor("set normal color other wise you will face problem on scrolling"));
holder.itemName.setText(list.get(position));
return view;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.