ListView点击或选中item改变背景

点击或选中ListView中的一项后,使item背景改变,失去焦点同样显示选中的背景,重新选中另外一项才刷新;

在Adapter中配置:

public class MyAdapter extends BaseAdapter{

 int mSelect = 0;   //选中项

     ......

 public void changeSelected(int positon){ //刷新方法
     if(positon != mSelect){
      mSelect = positon;
     notifyDataSetChanged();
     }
    }

public View getView(int position, View convertView, ViewGroup parent) {
//     if(convertView==null){
        LayoutInflater factory = LayoutInflater.from(context);
        View v = (View) factory.inflate(R.layout.list_item, null);
        TextView tv = (TextView) v.findViewById(R.id.Item_tv);
        tv.setText("test");
//     }
        if(mSelect==position){
         v.setBackgroundResource(R.drawable.fc_bg);  //选中项背景
        }else{
         v.setBackgroundResource(R.drawable.bg);  //其他项背景
        }

        return v;
    }

}

配置好了之后,下面就是应用:

...........

mAdapter = new MyAdapter(...);

myList.setAdapter(mAdapter);

//////////点击监听

myList.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    mAdapter.changeSelected(position);//刷新

            }......}

////////////////选中监听

myList.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                mAdapter.changeSelected(position);//刷新

            }......}

-------------------------------------------------------------------------------------

监听view获得焦点或按下等状态的背景,可以用selector;

在res--drawable中配置样式文件,如button_style.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/btn_bg_fc" /><!--按下时的背景-->
    <item android:state_focused="true" android:drawable="@drawable/btn_bg_fc" /><!--获得焦点时的背景-->
    <item android:state_selected="true" android:drawable="@drawable/btn_bg_fc" /><!--选中状态的背景-->
    <item android:drawable="@drawable/btn_bg" /> <!--默认背景-->
</selector>

用在Listview,gridview中

<ListView

......

android:listSelector="@drawable/button_style"

......> </ListView>

用于其他View,如Button,textview等

android:background="@drawable/button_style"

时间: 2024-12-20 03:45:21

ListView点击或选中item改变背景的相关文章

【Android笔记】listview点击或选中item改变item样式或背景

1.自定义Adapter中配置: 1 public class MyAdapter extends BaseAdapter{ 2 3 int mSelect = 0; //选中项 4 5 ...... 6 7 public void changeSelected(int positon){ //刷新方法 8 if(positon != mSelect){ 9 mSelect = positon; 10 notifyDataSetChanged(); 11 } 12 } 13 14 15 16 p

ListView 点击某一项换背景图片

1. layout_search_list_item.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#D5D5D5" androi

解决“listView点击一个Item,另外几个Item也跟着改变”的问题

如图所示: 我点击Item,右边的checkBox就会相应的变化,但是当我第一次做的时候,点击第一个Item,右边的checkBox变为绿色,但是当我listView往下拉的时候,发现下面也有是绿色的checkBox,很显然我是没有点击下面的.那么这个问题应该怎么解决呢,下面是我解决的方法: 首先是Item的布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=

Android 点击ListView(或GridView)的一个item,使其里面textview变色,点击另一个这个恢复原来颜色

今天作一个项目,就是做视频app,如果电视剧的话有许多剧集,点击一个item,播放不同的剧集,要有点击效果,并且默认是选择第一个.花费了一段时间,自己觉得有点难 度,现在和大家分享一下,下面是效果显示: 这个类是例子主类: <span style="font-size:14px;">public final class MainActivity extends Activity { private GridView gridView; private ArrayList&l

Android中Listview点击item不变颜色以及设置listselector 无效

这是同一个问题,Listview中点击item是会变颜色的,因为listview设置了默认的listselector,有一个默认的颜色,同理如果点击没颜色变化我们怎么设置listselector也不会变颜色的. 但是在我们的开发过程中,我们可能会碰到这样的问题listview点击不变颜色,总结了一下大概有这几种原因: 1.item的layout设置background颜色值,去掉背景颜色即可 2.listview中listselector属性的效果被覆盖了,比如列表的Item为一个占满单元格的I

解决listview点击item失效

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点.原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,

Android开发:ListView控件:给Item绑定了点击事件,却点击无效

一.问题引入 ListView控件:给Item绑定了点击事件,却点击无效. 二.解决方案 ListView使用了自定义布局文件,在布局文件中有button等控件时,这些控件获取焦点的级别比listView的item高,所以当点击item时,button等控件会优先获得点击焦点. 解决方法就是在布局文件根元素中添加属性: android:descendantFocusability="blocksDescendants" android:descendantFocusability De

iOS 创建多个button实现点击改变背景颜色

工程中需要实现与UISegmentedControl效果相似的一排一共十个button,如下图.但是SegmentedControl修改不太方便,就用button替代, 循环创建十个button,点击改变背景色.其他的没被点的button的背景恢复默认.之前也写过,因为button太多,需要各种判断.感觉之前方法的方法比较麻烦. . 第一种方法 在创建button的时候,把所有的button存储到可变数组里,在button点击事件里面,拿到之前的可变数组,对里面的每一个button遍历,遍历的时

ListView点击事件失效(item里面有button按钮控件)解决方法

ListView点击事件失效解决方法: 一般出现这个情况,就是你的item里面有按钮的点击事件,你的item里面有button控件,button控件是抢占焦点的,只要在你的item布局里面这样子写就可以了: <Button android:layout_width="140px" android:layout_height="56px" android:text="按钮" android:textSize="28px"