ListView点击时Item背景切换

简介: mainActivity如下: package cn.testlistviewcolor; import java.util.ArrayList; import java.

mainActivity如下:

package cn.testlistviewcolor;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
//小功能:
//1 点击ListView的item时,item的颜色(或者背景图片)发生变化
//2 与此同时,item中的TextView里的字体颜色发生变化
public class MainActivity extends Activity {
    private ListView listView;
    private ArrayList<HashMap<String, Object>> arrayList;
    private HashMap<String, Object> hashMap;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		listView = (ListView) findViewById(R.id.listView);
		arrayList = new ArrayList<HashMap<String, Object>>();
        for(int i=0; i<5; i++) {
        	hashMap = new HashMap<String, Object>();
        	hashMap.put("data", "Test" + i);
        	arrayList.add(hashMap);
        }
        
        SimpleAdapter simple = 
        new SimpleAdapter(this, arrayList, R.layout.list_item, new String[]{"data"},new int[]{R.id.textView});
        listView.setAdapter(simple);
		
		
	}

	

}


main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>


list_item.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- @drawable/bg_selector1为 item背景图变换 -->
<!-- @drawable/bg_selector2为 item背景色变换 -->
<!-- @drawable/textcolor_selector为点击和未点击时TextView上的文字颜色的切换 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@drawable/bg_selector1"
    >
    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:textColor="@drawable/textcolor_selector" 
    	/>

</LinearLayout>


bg_selector1.xml如下:

<?xml version="1.0" encoding="utf-8" ?>  
<!--当点击和平常状况下显示不同的背景图片 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
   <item android:state_pressed="true" android:drawable="@drawable/ha" />  
   <item android:drawable="@drawable/ic_launcher" /> 
</selector> 


bg_selector2.xml如下:

<?xml version="1.0" encoding="utf-8" ?>  
<!--当点击和平常状况下显示不同的颜色 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
   <item android:state_pressed="true" android:drawable="@color/red" />  
   <item android:drawable="@color/green" /> 
</selector> 


textcolor_selector.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:color="@color/white" /> <!-- focused -->
    <item android:state_pressed="true" android:color="@color/white" /> <!-- pressed -->
    <item android:state_selected="true" android:color="@color/white" /> <!-- pressed -->
    <item android:color="@color/black" /> <!-- default -->
</selector>


 

相关文章
|
PyTorch 算法框架/工具 Python
Python 量化投资(一):滑动均值、布林带、MACD、RSI、KDJ、OBV
Python 量化投资(一):滑动均值、布林带、MACD、RSI、KDJ、OBV
262 0
|
JSON JavaScript 前端开发
Android 缩减、混淆处理和优化应用研究(二)
Android 缩减、混淆处理和优化应用研究(二)
230 1
|
2月前
|
存储 Web App开发 Ubuntu
手机变PC:给安卓手机刷Ubuntu Touch系统
至此,魅族PRO 5刷入Ubuntu Touch即完成了。 魅族PRO 5的Ubuntu Touch的开机画面如下:
387 0
|
11月前
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
491 58
|
Python
【金融量化】通道突破策略之布林带策略(Bollinger Band )、肯特纳通道策略(Keltner Channel)、唐奇安通道策略(Donchian)原理简介
本文介绍了三种金融量化分析中的通道突破策略:布林带策略(Bollinger Band)、肯特纳通道策略(Keltner Channel)和唐奇安通道策略(Donchian Channel),并提供了每种策略的原理和Python实现代码。
853 2
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
799 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
Java API 调度
安卓多线程和并发处理:提高应用效率
【4月更文挑战第13天】本文探讨了安卓应用中多线程和并发处理的优化方法,包括使用Thread、AsyncTask、Loader、IntentService、JobScheduler、WorkManager以及线程池。此外,还介绍了RxJava和Kotlin协程作为异步编程工具。理解并恰当运用这些技术能提升应用效率,避免UI卡顿,确保良好用户体验。随着安卓技术发展,更高级的异步处理工具将助力开发者构建高性能应用。
525 5
使用Pattern.compile进行正则表达式匹配
使用Pattern.compile进行正则表达式匹配
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
334 1
|
Java Android开发
Android module 打包成aar或jar
Android module 打包成aar或jar
703 0