listview控件设置适配器的时候,如果使用自定义的adapter,比如MyArrayAdapter extends ArrayAdapter<String>

如果listitem布局文件不做任何处理的话,点击列表项的时候不会出现背景色灰色的现象。

实现思路是:在listitem布局文件中为该布局文件中的父控件:LinearLayout,设置android:background="@drawable/listitemclickseletor"

其中listitemclickseletor是res/drawable目录下的一个根节点为selector的xml文件。

listitem布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/listitemclickseletor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" > <TextView
android:id="@+id/listitemText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="18sp"
android:textColor="#000000"
android:gravity="center_vertical"
android:padding="15dp"
/> </LinearLayout>

simple_list_item_1_custom

listitemclickseletor文件

<?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/item_pressed"/>
<item android:drawable="@color/item_default"></item>
</selector>

colors文件
res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources> <color name="item_default">#ffffffff</color>
<color name="item_pressed">#bbbbbb</color> </resources>

效果图如下:

较为完整的使用过程:

1、Activity界面布局文件中的listview

<!-- 历史记录列表 -->
<!-- android:layout_width="match_parent"使用这个则代表列表项占据屏幕宽度 -->
<!-- android:layout_width="wrap_content"使用这个则代表列表项占据实际宽度 -->
<ListView
android:id="@+id/history_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>

2、Activity界面布局文件中的代码

private ListView history_list;//历史记录列表
//列表相关
private String[] history_arr;//历史记录数组
private MyArrayAdapter myarrayAdapter;//自定义的历史记录列表的数组适配器 //历史记录列表
history_list = (ListView) findViewById(R.id.history_list); //使用自定义的适配器
List<String> historyList = new ArrayList<String>();
for(String historyStr : history_arr){
historyList.add(historyStr);
} myarrayAdapter = new MyArrayAdapter(this, R.layout.simple_list_item_1_custom, historyList); history_list.setAdapter(myarrayAdapter);// 设置自定义的适配器

3、MyArrayAdapter类

package com.why.autosearch.adapter;

import java.util.List;

import com.why.autosearch.activity.R;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView; public class MyArrayAdapter extends ArrayAdapter<String>{ private int listitemResourceid;//列表项的布局文件ID
private Context mcontext; public MyArrayAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
listitemResourceid = resource;
mcontext = context;
} /**
* 重写getView*/
public View getView(int position, View convertView, ViewGroup parent) { String listItemStr = getItem(position); View view = null;
ViewHolder holder = null; if(convertView == null){
view = LayoutInflater.from(mcontext).inflate(listitemResourceid, parent, false);
holder = new ViewHolder();
holder.listitemText = (TextView) view.findViewById(R.id.listitemText);
view.setTag(holder);
}else{
view = convertView;
holder = (ViewHolder) view.getTag();
} //列表项的标题
holder.listitemText.setText(listItemStr); return view;
} class ViewHolder{
TextView listitemText;
} }

MyArrayAdapter

4、Listitem布局文件见文章开头。

自定义ListView适配器Adapter引用布局文件的情况下实现点击列表项时背景颜色为灰色的更多相关文章

  1. android之ListView,详细介绍实现步骤,举例,自定义listview适配器

    android之ListView,详细介绍实现步骤,举例,自定义listview适配器 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listVie ...

  2. ng-file-upload(在单文件选择,并且通过点击“上传”按钮上传文件的情况下,如何在真正选择文件之前保留上一文件信息?)

    文章前面研究ng-file-upload可能涉及指令: You can use ng-model or ngf-change instead of specifying function for ng ...

  3. ListView适配器Adapter介绍与优化

    一.ListView与Adapter的关系 ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来.一般而言,一个ListView由以下三个元素组成: 1.View ...

  4. Android中自定义ListView实现上拉加载更多和下拉刷新

    ListView是Android中一个功能强大而且很常用的控件,在很多App中都有ListView的下拉刷新数据和上拉加载更多这个功能.这里我就简单记录一下实现过程. 实现这个功能的方法不止一个,Gi ...

  5. bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码

    1,点击布局文件,出现  Cannot find declaration to  go to ? 且 点击代码不能跟踪代码? 把 项目的build.gradle 中的  compileSdkVersi ...

  6. php 502 无错误行和报错文件的情况下使用gdb调试方法

    lnmp环境 gdb  /usr/local/php5.2/bin/php-cgi  /tmp/coredump-php-cgi.20503 source /home/tmp/lnmp1.4-full ...

  7. 自定义ListView适配器

    继承BaseAdapter类 覆盖以下4个方法: @Override public int getCount() { return users.size(); } @Override public O ...

  8. 【Android】自定义ListView的Adapter报空指针异常解决方法

    刚刚使用ViewHolder的方法拉取ListView的数据,但是总会报异常.仔细查看代码,都正确. 后来打开adapter类,发现getView的返回值为null. 即return null. 将n ...

  9. 不重新编译PHP文件的情况下php GD库扩展库的编译安装(centos)

    gd-2.0.33.tar.gz http://www.boutell.com/gd/ jpegsrc.v6b.tar.gz http://www.ijg.org/ libpng-1.2.7.tar. ...

随机推荐

  1. SimpleHttpServer的学习之UML

    如何分析一个稍微大点的源码呢? 静态分析 除了看代码,就是 uml图,UML虽然在书本类与类之间的关系很复杂,可能要一本书,但是最核心的其实很简单: (1)继承 extends (2)实现接口 imp ...

  2. 沈晓军 / LarvaFrame - 代码托管 - 开源中国社区

    沈晓军 / LarvaFrame - 代码托管 - 开源中国社区 统计

  3. hdu4587-TWO NODES(割点)

    #include <bits/stdc++.h> using namespace std; ; ; struct Edge { int to, next; } edge[M]; int h ...

  4. IE比Chrome强的一个地方

    今天在开发时,调试一个功能.死活显示和同事不一样,他是测试过正常的,我的Chrome显示死活不对. 最后要重新部署了,才想起会不会是缓存的问题.清除Chrome缓存,再一试,一切正常. IE有一个功能 ...

  5. hdoj 1799 循环多少次?

    循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. [OC Foundation框架 - 12] NSNumber

    1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包   void number() ...

  7. Extjs4---Cannot read property 'addCls' of null

    用MVC做后台管理系统时遇到的问题,关于tab关闭后再打开不显示,或者报错 我在新的tabpanel中加入了一个grid,当我关闭再次打开就会报错Cannot read property 'addCl ...

  8. [置顶] Effective STL 学习笔记

    看Effective STL 作的一些笔记,希望对各位有帮助. 以下是50条条款及相关解释. 容器 1. 慎重选择容器类型,根据需要选择高效的容器类型. 2. 不要试图编写独立于容器类型的代码. 3. ...

  9. sql存储过程exec执行字符串select 的区别

    USE [GuangHong]GO/****** Object: StoredProcedure [dbo].[st_MES_SelInspctDetail] Script Date: 11/23/2 ...

  10. systemd service

    Man page systemd.unit SYSTEMD.UNIT(5) systemd.unit SYSTEMD.UNIT(5) NAME systemd.unit - Unit configur ...