利用sharePrefences记录被点击的ListView

该博客介绍了如何在Android项目中利用SharedPreferences记录ListView的点击状态。通过封装SharedPreferences,为ListView添加监听,当用户点击ListView项后,将其title设为灰色并持久化记录。在刷新ListView时,利用notifyDataSetChanged更新视图。
摘要由CSDN通过智能技术生成

点击过的ListVIew 被记录,并把title变为灰色

效果图:



1 封装SharePrefences:

/*
 * 封装sharePreferences 
 */
public class PreferenceUtils {

	public final static String PREF_NAME="config";
	public 	static String getString(Context ctx,String key,String defaultValue)
	{
		SharedPreferences sp=ctx.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
		
		return sp.getString(key, defaultValue);
		
	}
	public 	static void SetString(Context ctx,String key,String defaultValue)
	{
		SharedPreferences sp=ctx.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
		
		sp.edit().putString(key, defaultValue).commit();
	}
}


2 添加listView监听:

lv_tablist.setOnItemClickListener(new OnItemClickListener() {//监听哪一个被点击,并将点击的条目变灰色

			@Override
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				position=position-lv_tablist.getHeaderViewsCount();
				
				
				System.out.println(position+"  : "+view);
				//changeReadState(view);	//直接调用的弊端,由于是优化过的ListView 因此不是重复绘制ListView,一个被标记时会出现多个ListView变灰色的情况		
			
				/*
				 * 可使用sharePreference来记录被点击的ID
				 */
				String ids = PreferenceUtils.getString(mActivity, "read_ids", "");
				
				if(!ids.contains(mNewsList.get(position).id))
				{
					ids=ids+mNewsList.get(position).id+" ,";
					PreferenceUtils.SetString(mActivity, "read_ids", ids);
				}
				mNewsdapger.notifyDataSetChanged();
			}
		});


3 刷新ListVIew:

使用notifyDataSetChanged之后,在适配器getView中添加:

/*
			 * 获取被点击ListView 的ID,并变换Title的颜色
			 */
			String ids=PreferenceUtils.getString(mActivity, "read_ids", "");
			if(ids.contains(getItem(position).id))
			{
				holder.ViewHolder_tvTitle.setTextColor(Color.GRAY);
			}
			else
			{
				holder.ViewHolder_tvTitle.setTextColor(Color.BLACK);
			}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值