android中设置ListView的选中的Item的背景颜色

简介: ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的。              1、配置main.

 ListView中没有默认的选择颜色,只有选择Item后的焦点颜色,鼠标点击时Item有颜色,放开鼠标后颜色也就没有了,要实现放开鼠标后选择项的背景还是有颜色的。

 

  

 

   

 

1、配置main.xml

Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <ListView android:id="@+id/listView" android:listSelector="#000000"  
  6.         android:layout_width="fill_parent"  
  7.         android:layout_height="wrap_content" />  
  8. </LinearLayout>  

 

    设置Item的获取焦点颜色为白色android:listSelector="#000000"(即不显示背景颜色)

 

2、配置用于ListView显示Item的button_layout.xml

 

Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.   xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   android:id="@+id/LinearLayoutButton"  
  5.   android:layout_width="144px"  
  6.   android:layout_height="99px"  
  7.   android:gravity="center"  
  8.   android:orientation="vertical">  
  9.     
  10.       
  11.     <TextView   
  12.         android:id="@+id/TextViewButton"   
  13.         android:layout_width="fill_parent"   
  14.         android:layout_height="fill_parent"  
  15.         android:textSize="20px">  
  16.     </TextView>  
  17.       
  18.       
  19. </LinearLayout>  

 

 

3、实现Activity

 

 

Java代码   收藏代码
  1. package com.listButtonTest.www;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import android.app.Activity;  
  6. import android.content.Context;  
  7. import android.graphics.Color;  
  8. import android.os.Bundle;  
  9. import android.os.Handler;  
  10. import android.os.Message;  
  11. import android.view.LayoutInflater;  
  12. import android.view.View;  
  13. import android.view.ViewGroup;  
  14. import android.widget.AdapterView;  
  15. import android.widget.BaseAdapter;  
  16. import android.widget.LinearLayout;  
  17. import android.widget.ListView;  
  18. import android.widget.TextView;  
  19.   
  20. public class listButtonTest extends Activity {  
  21.     private ListView listView = null;  
  22.     private ListAdapter listAdapter = null;  
  23.   
  24.     /** Called when the activity is first created. */  
  25.     @Override  
  26.     public void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.main);  
  29.         listView = (ListView) this.findViewById(R.id.listView);  
  30.         ArrayList<ButtonView> buttonListView = new ArrayList<ButtonView>();  
  31.         ButtonView a = new ButtonView(R.string.l1);  
  32.         buttonListView.add(a);  
  33.         ButtonView b = new ButtonView(R.string.l2);  
  34.         buttonListView.add(b);  
  35.         ButtonView c = new ButtonView(R.string.l3);  
  36.         buttonListView.add(c);  
  37.         ButtonView d = new ButtonView(R.string.l4);  
  38.         buttonListView.add(d);  
  39.         ButtonView e = new ButtonView(R.string.l5);  
  40.         buttonListView.add(e);  
  41.   
  42.         listAdapter = new ListAdapter(buttonListView);  
  43.         listView.setAdapter(listAdapter);  
  44.         listView.setDividerHeight(0);  
  45.   
  46.         listView.setOnItemClickListener(new ListView.OnItemClickListener() {  
  47.   
  48.             @Override  
  49.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  50.                     long arg3) {  
  51.                 // TODO Auto-generated method stub  
  52.                 listAdapter.setSelectedPosition(arg2);  
  53.                    
  54.                 listAdapter.notifyDataSetInvalidated();     
  55.   
  56.             }  
  57.         });  
  58.     };  
  59.   
  60.    
  61.   
  62.     public class ListAdapter extends BaseAdapter {  
  63.   
  64.         ArrayList<ButtonView> arrayList = null;  
  65.         LayoutInflater inflater;  
  66.         View view;  
  67.         ButtonLayoutHolder buttonLayoutHolder;  
  68.         LinearLayout buttonLayout = null;  
  69.         TextView buttonText = null;  
  70.   
  71.         private int selectedPosition = -1;// 选中的位置  
  72.   
  73.         public ListAdapter(ArrayList<ButtonView> buttonListView) {  
  74.             // TODO Auto-generated constructor stub  
  75.             arrayList = buttonListView;  
  76.         }  
  77.   
  78.         @Override  
  79.         public int getCount() {  
  80.             // TODO Auto-generated method stub  
  81.             return arrayList.size();  
  82.         }  
  83.   
  84.         @Override  
  85.         public Object getItem(int position) {  
  86.             // TODO Auto-generated method stub  
  87.             return arrayList.get(position);  
  88.         }  
  89.   
  90.         @Override  
  91.         public long getItemId(int position) {  
  92.             // TODO Auto-generated method stub  
  93.             return position;  
  94.         }  
  95.   
  96.         public void setSelectedPosition(int position) {  
  97.             selectedPosition = position;  
  98.         }  
  99.   
  100.         @Override  
  101.         public View getView(int position, View convertView, ViewGroup parent) {  
  102.             // TODO Auto-generated method stub  
  103.             inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  104.             view = inflater.inflate(R.layout.button_layout, null, false);  
  105.             buttonLayoutHolder = (ButtonLayoutHolder) view.getTag();  
  106.   
  107.             if (buttonLayoutHolder == null) {  
  108.                 buttonLayoutHolder = new ButtonLayoutHolder();  
  109.                 buttonLayoutHolder.buttonLayout = (LinearLayout) view  
  110.                         .findViewById(R.id.LinearLayoutButton);  
  111.                 buttonLayoutHolder.textView = (TextView) view  
  112.                         .findViewById(R.id.TextViewButton);  
  113.                 view.setTag(buttonLayoutHolder);  
  114.             }  
  115.             buttonLayout = buttonLayoutHolder.buttonLayout;  
  116.             buttonText = buttonLayoutHolder.textView;  
  117.             if (selectedPosition == position) {  
  118.                 buttonText.setSelected(true);  
  119.                 buttonText.setPressed(true);  
  120.                 buttonLayout.setBackgroundColor(Color.RED);  
  121.             } else {  
  122.                 buttonText.setSelected(false);  
  123.                 buttonText.setPressed(false);  
  124.                 buttonLayout.setBackgroundColor(Color.TRANSPARENT);     
  125.   
  126.             }  
  127.   
  128.             buttonText.setTextColor(Color.WHITE);  
  129.             buttonText.setText(arrayList.get(position).textViewId);  
  130.   
  131.             return view;  
  132.   
  133.         }  
  134.   
  135.     };  
  136.   
  137. }  
  138.   
  139. class ButtonView {  
  140.     int textViewId;  
  141.   
  142.     ButtonView(int tId) {  
  143.         textViewId = tId;  
  144.     }  
  145. }  
  146.   
  147. class ButtonLayoutHolder {  
  148.     LinearLayout buttonLayout;  
  149.     TextView textView;  
  150. }  

 

 

  在listView的setOnItemClickListener事件中标记这次选择的Item的下标:listAdapter.setSelectedPosition(arg2);

 

  然后调用listAdapter.notifyDataSetInvalidated()通知后台重新刷新界面。

 

  在ListAdapter的getView()方法中,如果是选中的Item则显示背景颜色,如果不是则不显示背景颜色。

http://longyi-java.iteye.com/blog/976067

相关文章
|
3月前
|
XML API Android开发
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
本文介绍了如何使用androidx.preference库快速创建具有一级和二级菜单的Android设置界面的步骤和示例代码。
125 1
码农之重学安卓:利用androidx.preference 快速创建一、二级设置菜单(demo)
|
2月前
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
260 3
|
3月前
|
Java 网络安全 开发工具
UNITY与安卓⭐一、Android Studio初始设置
UNITY与安卓⭐一、Android Studio初始设置
|
4月前
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
121 12
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
153 0
|
3月前
|
开发工具 Android开发
Android项目架构设计问题之外部客户方便地设置回调如何解决
Android项目架构设计问题之外部客户方便地设置回调如何解决
28 0
|
3月前
|
数据可视化 Java 数据挖掘
Android项目架构设计问题之设置RecyclerView的LayoutManager如何解决
Android项目架构设计问题之设置RecyclerView的LayoutManager如何解决
35 0
|
Android开发
在Android上实现图像颜色过滤与反转
在Android上实现图像颜色过滤与反转 一:原理 Android已经提供了以resource形式加载图片,使用BitmapFactory的decodeResource 方法获取一个Bitmap对象,从Bitmap对象中读取图片的像素数组,基于像素ARGB值实现 颜色过滤和颜色反转。
1532 0
|
6天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
11天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。