点击android:listview列表item无反应的问题

今天遇到一个令人头疼的问题:我在Activity中的onCreate()方法中写了listView.setOnItemClickListener()

但是运行模拟器后点击ListView的Item时没有任何反应,以前这样写却不会出现这种情况,

后来百度多次才找到问题所在:(参考链接:http://ming.highgic.com/?p=198)

原来这个ListViewitem里面有button,需要在xml布局文件中设置button属性,其中focusable是关键:

android:focusable=”false”android:clickable=”false”
android:focusableInTouchMode=”false”

下面晒晒代码:

//Activity的onCreate()方法

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.allcourses);

listView = (ListView) this.findViewById(R.id.allCourseListV);

mAdapter = new SimpleAdapter(this, getData(),
R.layout.allcourselistviewitem,
new String[] { "image",
"title", "tvgo" }, new int[] {
R.id.allCourseimageV,
R.id.allCoursetextextV, R.id.allCourseGo
});

listView.setAdapter(mAdapter);

listView.setOnItemClickListener(new OnItemClickListener()
{

@Override
public void onItemClick(AdapterView<?> parent,
View view,
int position, long id) {

Intent intent = new Intent(AllCourseActivity.this,

ClassificationCourseActivity.class);
String[] name = { "
文学",
"哲学", "艺术", "历史", "经济", "教育", "生理学",
"农学", "法学", "心理学", "医学", "军事", "管理学",
"建筑与工程", "互联网" };
intent.putExtra("textViewName", name[position]);

startActivity(intent);
.show();
}
});

}

//上面SimpleAdapter需要绑定的数据

public List<HashMap<String, Object>> getData() {

mHashMaps = new ArrayList<HashMap<String, Object>>();

map = new HashMap<String, Object>();
map.put("image",
R.drawable.wx);
map.put("title", "
文学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.zx);
map.put("title", "
哲学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.ys);
map.put("title", "
艺术");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.ls);
map.put("title", "
历史");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.jjx);
map.put("title", "
经济");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.jyx);
map.put("title", "
教育");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.lk);
map.put("title", "
生理学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.lx);
map.put("title", "
农学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.fx);
map.put("title", "
法学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.xlx);
map.put("title", "
心理学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.yx);
map.put("title", "
医学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.js);
map.put("title", "
军事");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.glx);
map.put("title", "
管理学");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.gk);
map.put("title", "
建筑与工程");

mHashMaps.add(map);

map = new HashMap<String, Object>();
map.put("image",
R.drawable.jh);
map.put("title", "
互联网");

mHashMaps.add(map);

return mHashMaps;
}

//ListView中每个Item的XML文件(ListView的XML文件就没必要贴出来了吧)

<?xml version="1.0" encoding="utf-8"?>
< LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"

android:background="@drawable/gradient_bg_hover"

android:orientation="horizontal" >

<ImageView
android:id="@+id/allCourseimageV"

android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:layout_gravity="center"
android:layout_margin="5dp"

android:src="@drawable/jh" />

<TextView
android:id="@+id/allCoursetextextV"

android:layout_width="match_parent"
android:layout_height="match_parent"

android:layout_marginLeft="37dp"
android:layout_weight="1"

android:gravity="center_vertical"
android:text="
全部课程"

android:textColor="#000000"
android:textSize="18sp" />

<Button
 //
就是这个Button害我忙活了大半天啊

android:id="@+id/allCourseGo"
android:layout_width="wrap_content"

android:layout_height="wrap_content"
android:layout_gravity="center"

android:layout_marginRight="17dp"
android:gravity="right"
android:focusable="false"
android:clickable="false" 
android:focusableInTouchMode="false"

android:background="@drawable/turnright"
/>

</LinearLayout>

时间: 2024-11-05 06:25:25

点击android:listview列表item无反应的问题的相关文章

Android ListView的item点击无响应的解决方法

如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法 是在listitem的布局文件中设置descendantFocusability属性. item的布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.andro

Android ListView列表控件的简单使用

ListView 列表是我们经常会使用的控件, 如果想要自定义里面的显示的话是挺麻烦的, 需要新建XML.Class SimpleAdapter这两个文件, 较为麻烦. 如果我们只是想显示两.三行文字在上面, 却又不想那么麻烦呢? 那我们只要新建一个XML就够了.  这里以显示一个ListView项里三个TextView为例.  首先我们要创建一个XML文件, 这个XML文件是用来作为单个ListView项布局用的.  list_row.xml[java]<?xml version="1.

android listview中item通过viewpager实现

android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项目主要介绍多个viewpager加载图片和listview 上下滑动不卡顿问题.本项目由作者Flyco分享的分享地址:https://github.com/H07000223/FlycoBanner_Master.本项目找对应id封装一个ViewFindUtils类,通过如下代码找id    /**

Android ListView的item背景色设置

1.如何改变item的背景色和按下颜色 listview默认情况下,item的背景色是黑色,在用户点击时是黄色的.如果需要修改为自定义的背景颜色,一般情况下有三种方法: 1)设置listSelector 2)在布局文件中设置item的background 3)在adapter的getview中设置 这三种方法都能达到改变item默认的背景色和按下颜色,下面来分别讲解,但是在这之前需要先写好selector.xml文件; <?xml version="1.0" encoding=&

android listview的item布局中含有button,不会响应listview的onitemclick监听 以及 onitemlongclick监听问题解决

效果图: activity的布局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&qu

基于“ViewHolder”技术提升Android ListView中Item View加载效率

对于提升Android中频繁使用的ListView子Item View的加载效率,基于两点基本考虑: 1,Android的View的创建比较消耗资源: 2,findViewById()也不是最快的. 所以在实际开发中经常使用的适配器中的getView()方法: public View getView(int position, View convertView, ViewGroup parent); 如果每次都在里面创建一个新View出来,将导致效率低下,比较高效率的做法是每次判断convert

Android ListView 列表项点击之后,保持背景颜色

项目中突然遇到这样的问题,一些消息类的界面,需要使用listview进行显示,正常的需求是刚开始进入消息显示界面的时候,列表项显示的都是全黑的,接着点击了某一个列表项之后,就要更换成白色,并且保持白色的显示,剩下的仍旧为黑色的,一开始就有点走进了死胡同,使用selector结合shape来定义选中.未选中.点击或者点击之后的背景显示,实例如下: </pre><p></p><pre name="code" class="html&quo

Android listview的item点击事件失效Bug的解决

原因:listview布局中出现了button  .imaageButton.checkBox等可以点击的控件 第一种解决方法:在布局中添加android:descendantFocusability="blocksDescendants" 第二种解决方法:使用其他控件代替,在activity中用setOnClickListener监听点击事件

Android ListView 多样式Item的一个注意点:(

闲来无事,在写一个多样式Item的ListView的Demo时,遇到了一个以前没遇过的问题; ╮( ̄▽ ̄")╭ 我们知道,ListView里可以有多种样式的item, 实现只需要重写: 1 @Override 2 public int getItemViewType(int position) { 3 int type = Integer.parseInt(mData.get(position).get(KEY_TYPE)); 4 switch (type) { 5 case TYPE_HEAD