ListView点击时Item背景切换

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>

 

时间: 2024-08-01 08:55:49

ListView点击时Item背景切换的相关文章

【Android】 ListView点击时怎么才能只让背景图片变色,其余部分保持不变?

问题描述 [Android] ListView点击时怎么才能只让背景图片变色,其余部分保持不变? 大家可以看到,我在listview中的布局是两个按Vertical排列的TextView,小弟想实现类似微信上的效果,但是图片上可以看到,当点击Listview时整个布局都会被选中,而不是只选中仅仅包含图片的部分.所以想请教下怎么样才能实现?是否微信的效果不是用listview做的? PS:小弟初出茅庐,没有分可以悬赏,望各位大哥不吝赐教! 解决方案 1.你现在设置的点击内容是ListView的整个

Android实现为ListView同时设置点击时的背景和点击松手之后的背景_Android

本文实例讲述了Android实现为ListView同时设置点击时的背景和点击松手之后的背景.分享给大家供大家参考.具体分析如下: 这里要达到的效果是, (1)点击ListView的item时会有指定的背景, (2)松手之后,刚才点击的item也会有指定的背景 实现(1)很简单:在xml中为ListView设置listSelector即可. 复制代码 代码如下: <ListView  android:id="@+id/pop_listview_left"  android:layo

Android listview更改选中时item背景色

http://www.cnblogs.com/loulijun/archive/2012/04/15/2450312.html

adapter-ListView 点击时 出现未更新崩溃

问题描述 ListView 点击时 出现未更新崩溃 崩溃时提示这个错误: adapter已经改变了,但是listview没有收到 notification. 我的个人理解:我在其他的线程里 改变了传入adapter的ArrayList,所以会提示adapter已经改变,但是还未调用 adapter.notifyDataSetChanged(),所以点击时会出错. 请问应该如何修复这个bug呢?我设置clickable=false也不起作用. 新手略穷,只给一分,还望见谅.. 解决方案 给list

android-当点击 edit text 时,显示 ListView 中最后的 item

问题描述 当点击 edit text 时,显示 ListView 中最后的 item 现在这样做是为了点击 edit text 时,获取 listview 最后一个 item 的焦点: bodyText.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { getListView().setSelection(getListView(

onitemclick-关于android中listview点击item没有反应

问题描述 关于android中listview点击item没有反应 public class MapActivity extends BasePagerActivity { private MapView mMapView = null; private BaiduMap mBaiduMap; private ListView map_menu_lv; @Override protected void onCreate(Bundle savedInstanceState) { // TODO A

Android编程简单实现ImageView点击时背景图修改的方法_Android

本文实例讲述了Android编程简单实现ImageView点击时背景图修改的方法.分享给大家供大家参考,具体如下: 在使用ImageView时,当被点击时,希望背景图修改一下,这样显示被点击效果明显一些.在这里,一个很简单的方法,最起码是个很清晰的方法.在res/drawable文件夹下创建一个xml文件.比如my.xml,内容如下: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:an

ontouchevent-ListView的item中实现@功能,点击时跳转执行两次的问题,

问题描述 ListView的item中实现@功能,点击时跳转执行两次的问题, 下面是一个自定义的TextView: `public class TextViewFixTouchConsume extends TextView { public TextViewFixTouchConsume(Context context) { super(context); } public TextViewFixTouchConsume(Context context, AttributeSet attrs)

Android关于listview点击item中某一个按钮把这个item置顶的问题

问题描述 Android关于listview点击item中某一个按钮把这个item置顶的问题 大神告知我如何点击listview中item的某一个按钮·把相应的item进行置顶呢?或者说不用listview用动态加载如何实现呢? 解决方案 置顶,其实就是把你点击的这个item放到数据源列表的第一项,然后notify一下 解决方案二: 比如你的listview对应的数据列表为items,在getview时,可以在每个试图中保留位置postion,当点击时,取出postion,然后取出items中p