最近遇到了一个问题,在用到listview时,想在listview的item点击后显示高亮的效果,但是在activity中写listview的onitemclick事件中写变色效果后,点击可以变色,但是在listview滑动后,这个效果竟然消失了?很是纠结,为什么呢?原因没有搞太懂,好像是在滑动的时候又触发了adapter,所以导致效果消失。后来找到一种解决办法,分享下:

在listview的adapter中添加如下方法:

/**

* 增加用户点击时,获得位置,并改变颜色

* @param pos

*/

public void setSelectedPosition(int pos) {

selectedPos = pos;

// inform the view of this change

notifyDataSetChanged();

}

public int getSelectedPosition() {

return selectedPos;

}

然后在listview的onitemonclick事件时调用这个方法:

public class MeasureitemListener implements OnItemClickListener{

@Override

public void onItemClick(AdapterView> arg0, View arg1, int arg2,

long arg3) {

measurelistadapter.setSelectedPosition(arg2);

datalDialog= new LoadDialogDao(getActivity(),"数据加载中...");

datalDialog.show();

Map map = (Map)arg0.getItemAtPosition(arg2);

measure_id = map.get("measuerid");

getData(measure_id);

}

};

效果就是点击后,listview被点击的部分会显示高亮效果,也可以根据自己的需要设置效果。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐