繁体   English   中英

无法在Android中突出显示基于ArrayAdapter和ViewHolder的默认ListView项目

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM