有关listview点击变色的问题

lenghucs 2012-12-10 11:15:59
我的listview点击后弹出popupwindow,现在点击后已经可以使点击的item保持住变色状态

问题是希望点击popupwindow外面后可以让item的颜色变回初始的颜色,这个问题需要怎么来设置???




这是目前出现的效果,我是在onItemClick中设置的view背景色


// 点击显示

lv_patient.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
view.setBackgroundColor(getResources().getColor(R.color.blue));
Cursor cursor = (Cursor) mAdapter.getItem(position);
pid = cursor.getString(cursor.getColumnIndex("pid"));
pw.showAsDropDown(ll_patient, w / 3, h / 3);

}
});



希望各位能帮忙看一下,感谢!
...全文
270 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lenghucs 2012-12-10
  • 打赏
  • 举报
回复
引用 1 楼 yameideya 的回复:
一般在Adapter的getview里面处理吧 你可以设个变量 当触发监听的时候改变变量值 然后刷新listview
我是用的CursorAdapter,我试试改一下吧
yameideya 2012-12-10
  • 打赏
  • 举报
回复
一般在Adapter的getview里面处理吧 你可以设个变量 当触发监听的时候改变变量值 然后刷新listview
lenghucs 2012-12-10
  • 打赏
  • 举报
回复
引用 1 楼 yameideya 的回复:
一般在Adapter的getview里面处理吧 你可以设个变量 当触发监听的时候改变变量值 然后刷新listview
做出来了,不过是用的另外的方法
/**
	 * 改变listitem的背景色
	 * 
	 * @param view
	 */
	private void itemBackChanged(View view) {
		if (itemView == null) {
			itemView = view;
		}
		itemView.setBackgroundColor(getResources().getColor(
				android.R.color.transparent));
		// 将上次点击的listitem的背景色设置成透明
		view.setBackgroundResource(R.color.blue);
		// 设置当前点击的listitem的背景色
		itemView = view;

	}
这方法有个缺点,就是需要再次点击时才会改变,这个还需要看看,谢谢啦
lenghucs 2012-12-10
  • 打赏
  • 举报
回复
引用 3 楼 ConnectionUtils 的回复:
引用 2 楼 lenghucs 的回复:引用 1 楼 yameideya 的回复: 一般在Adapter的getview里面处理吧 你可以设个变量 当触发监听的时候改变变量值 然后刷新listview 我是用的CursorAdapter,我试试改一下吧 Lz可以考虑给该lv添加一个setOnFocusChangeListener方法来处理 ……
做出来了,不过是用的另外的方法
/**
	 * 改变listitem的背景色
	 * 
	 * @param view
	 */
	private void itemBackChanged(View view) {
		if (itemView == null) {
			itemView = view;
		}
		itemView.setBackgroundColor(getResources().getColor(
				android.R.color.transparent));
		// 将上次点击的listitem的背景色设置成透明
		view.setBackgroundResource(R.color.blue);
		// 设置当前点击的listitem的背景色
		itemView = view;

	}
这方法有个缺点,就是需要再次点击时才会改变,这个还需要看看,谢谢啦
lenghucs 2012-12-10
  • 打赏
  • 举报
回复
引用 3 楼 ConnectionUtils 的回复:
引用 2 楼 lenghucs 的回复:引用 1 楼 yameideya 的回复: 一般在Adapter的getview里面处理吧 你可以设个变量 当触发监听的时候改变变量值 然后刷新listview 我是用的CursorAdapter,我试试改一下吧 Lz可以考虑给该lv添加一个setOnFocusChangeListener方法来处理 ……
这个不行呢,刚才试了一下,只有在第一次显示才调用这个方法了,不过也谢谢了,我还在调试各种方法
csdn_2013 2012-12-10
  • 打赏
  • 举报
回复
引用 2 楼 lenghucs 的回复:
引用 1 楼 yameideya 的回复: 一般在Adapter的getview里面处理吧 你可以设个变量 当触发监听的时候改变变量值 然后刷新listview 我是用的CursorAdapter,我试试改一下吧
Lz可以考虑给该lv添加一个setOnFocusChangeListener方法来处理

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧