分享

ListView item点击不变色

 深呼吸_DA 2014-06-27
java代码:
  1. <ListView
  2. android:id="@+id/contact_listview"
  3. android:layout_width="wrap_content"
  4. android:layout_height="400dip"
  5. android:divider="#b9b9b9"
  6. android:dividerHeight="1px"
  7. android:cacheColorHint="#00000000"
  8. android:listSelector="@drawable/list_selector"
  9. android:headerDividersEnabled="true">
  10. </ListView>
复制代码
       2、在drawable文件夹中见一个list_selector.xml文件,不用写什么内容,只是用来把系统自带的给覆盖掉。

java代码:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <selector xmlns:android="http://schemas./apk/res/android">
  3. </selector>
复制代码
       3、在values文件夹中新建一个colors.xml文件,用来写颜色值:

java代码:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <color name="list_item_focus">#626fcd</color>
  4. </resources>
复制代码
       4、在java文件里定义一个私有变量private View itemView;用来保存上一次选中的listitem。
       5、在下面三种事件中改变背景色

java代码:
  1. //listview的itme选中事件

  2. private OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener() {
  3. @Override
  4. public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
  5. itemBackChanged(arg1);
  6. position = arg2;
  7. }

  8. @Override
  9. public void onNothingSelected(AdapterView<?> arg0) {
  10. }

  11. };

  12. //长按事件
  13. private OnItemLongClickListener itemLongClickListener = new OnItemLongClickListener() {
  14. @Override
  15. public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
  16. itemBackChanged(view);
  17. ContactGrpMemActivity.this.position = position;
  18. return false;
  19. }
  20. };

  21. //listview的item点击事件
  22. private OnItemClickListener itemClicklistener = new OnItemClickListener() {
  23. @Override
  24. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  25. long arg3) {
  26. Log.i(TAG, "**************onItemClick arg0 is " + arg0.getClass().getName());
  27. Log.i(TAG, "**************onItemClick arg1 is " + arg1.getId());
  28. Log.i(TAG, "**************onItemClick arg2 is " + arg2);
  29. Log.i(TAG, "**************onItemClick arg3 is " + arg3);
  30. itemBackChanged(arg1);
  31. position = arg2;
  32. }
  33. };

  34. //改变listitem的背景色
  35. private void itemBackChanged(View view) {
  36. //改变当前点击的listitem中textview的字体颜色
  37. TextView contactName = (TextView)view.findViewById(R.id.contactName);
  38. TextView contactTel = (TextView)view.findViewById(R.id.contactTel);
  39. contactName.setTextColor(Color.WHITE);
  40. contactTel.setTextColor(Color.WHITE);
  41. if(itemView == null) itemView = view;
  42. if(itemView != view) {
  43. //改变上次点击点击的listitem中textview的字体颜色
  44. contactName = (TextView)itemView.findViewById(R.id.contactName);
  45. contactTel = (TextView)itemView.findViewById(R.id.contactTel);
  46. contactName.setTextColor(Color.BLACK);
  47. contactTel.setTextColor(Color.BLACK);
  48. }

  49. itemView.setBackgroundColor(android.R.color.transparent);
  50. //将上次点击的listitem的背景色设置成透明
  51. view.setBackgroundResource(R.color.list_item_focus);
  52. //设置当前点击的listitem的背景色
  53. itemView = view;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多