如何更改listview的特定行颜色

时间:2016-11-10 11:27:01

标签: android listview

我有Listview的通知,我想如果用户点击通知(特定行),它的颜色应该改变。 更改颜色意味着阅读通知。 即使应用程序重新启动,也应该反映更改的颜色。

为此,我已经在扩展数组适配器的类中编写了代码。

 @Override
public View getView(int position, View v, ViewGroup parent)
{
    View mView = v ;
    if(mView == null){
        LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = vi.inflate(id, null);
    }
    listView=(ListView)mView.findViewById(R.id.notiID);
    String sd= yORn.get(position);
    if(sd=="Y"){
        listView.getChildAt(position).setBackgroundColor(Color.GREEN);
    }

我也使用了调试器,我在if循环中得到条件,但我的问题是我没有得到lisview的改变颜色。 调试器没有在if循环中移动。

任何想法?

3 个答案:

答案 0 :(得分:0)

您应该使用RecyclerView而不是Listview开始。在RecyclerView适配器中,检查onBindViewHolder中的位置,并相应地设置行的背景颜色。见下文。

 @Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
    if(position == 2){
        holder.ll_item_background.setBackgroundColor(mContext.getResources().getColor(R.color.calc_boxes));
    } 

    // Do your stuff here
}

答案 1 :(得分:0)

默认情况下,我将背景颜色设置为红色,如果用户读取,则背景颜色将根据您的预期更改为绿色。我编辑了你的代码。

@Override
    public View getView(int position, View v, ViewGroup parent)
    {
        View mView = v ;
        ViewHolder holder = null;
        if(mView == null){
            LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mView = vi.inflate(id, null);
            holder.listItem = mView;
            mView.setTag(holder);
        }else{
            holder = (ViewHolder)mView.getTag();
         }

        //By Default
        holder.listItem.setBackgroundColor(Color.RED);

        String sd= yORn.get(position);
        if(sd.equals("Y")){
            holder.listItem.setBackgroundColor(Color.GREEN);
        }
        }

    class ViewHolder{
         View listItem;
    }

希望这有用:)

答案 2 :(得分:-1)

 @Override
    public View getView(int position, View v, ViewGroup parent)
    {
        View mView = v ;
        ViewHolder holder = null;
        if(mView == null){
            LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mView = vi.inflate(id, null);
            holder.listItem = mView;
            mView.setTag(holder);
        }else{
            holder = (ViewHolder)mView.getTag();
         }
        String sd= yORn.get(position);
        if(sd.equals("Y")){
            holder.listItem.setBackgroundColor(Color.GREEN);
        }

    }
    class ViewHolder{
         View listItem;
    }