Android:即使关闭应用后,也会保存颜色更改状态

时间:2014-03-25 06:30:12

标签: android listview

点击listview时,我想在item中保存文字颜色的状态。目前我有一个custom adapter我正在做所有正确的事情,但只有当用户在应用程序中时颜色仍然会改变。并且一旦用户关闭应用程序。颜色再次设置为上一个.i.e到default一个。我试图使用arraylist的位置在getView中保存颜色状态,但这对我来说也不起作用。或者我应该使用db吗?知道如何在用户关闭应用程序后保存该颜色状态。并在getView访问开始时说明并相应地设置颜色。这个概念就像我们在email个应用中看到的那样。其中一些邮件被标记为已读,一些邮件被标记为未读,具有不同的颜色和文本样式。我已经解释了我的问题,如果有人想要更多的解释,请告诉我,我会。

这是我的适配器代码:

ArrayList<ReadNotifications> saveState;

public AdatperReadNotification(Context context , ArrayList<ReadNotifications> save) {
        this.context = context;
        this.saveState = save;
    }



@Override
    public View getView(final int position, View view , ViewGroup arg2) {

        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (view == null)
        {
            view = inflater.inflate(R.layout.adapter_readnotificaiton, null);
        }

        ReadNotifications details = saveState.get(position);

        TextView tv = (TextView) view.findViewById(R.id.txtview);


        if(saveState.get(position).isSelected)
        {
                    // if was clicked set this color on start of view
            tv.setTextColor(Color.GRAY);
        }

        else{
                            // Set to Default color
                tv.setTextColor(Color.rgb(0,255,255));
        }

        date.setText(details.tvText());

        tv.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                tv.setTextColor(Color.GRAY);
                Intent intent = new Intent(context,ReadNotif.class);
                v.getContext().startActivity(intent);
                saveState.get(position).isSelected = true;
            }
        });


        return view;
    }

这是我的ReadNotifications类:

public class ReadNotifications implements Serializable
{

    public boolean isSelected;
    ContentValues colmnValues;  


    public ReadNotifications(ContentValues values  ) 
    {
        colmnValues = values;
    }



    public String tvText() {
        return getValue(colmnValues.get("tvText"));
    }


    private String getValue(Object obj){
        if(obj == null){
            return "";
        }
        return (String) obj;
    }


}

1 个答案:

答案 0 :(得分:0)

对你来说只是一个简单的伎俩: -

在您的应用中使用sharedpreferences。

您可以在SharedPreferences中保存颜色哈希值或任何字符串或任何对象。

如果您需要保存项目的状态,那么SharedPreferences将是一个非常好的选择。

由于