点击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;
}
}
答案 0 :(得分:0)
对你来说只是一个简单的伎俩: -
在您的应用中使用sharedpreferences。
您可以在SharedPreferences中保存颜色哈希值或任何字符串或任何对象。
如果您需要保存项目的状态,那么SharedPreferences将是一个非常好的选择。
由于