如何设置ListView不可点击

我有这个ListView只需要显示数据。
所以我不想让它可点击
首先,我试着将XML列表视图更改为:

 <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:clickable="false" > 

但它没有工作。
所以要解决我的问题,我通过代码设置:

  list.setSelector(android.R.color.transparent); 

但我不敢相信没有更好的解决scheme。 任何想法?

Solutions Collecting From Web of "如何设置ListView不可点击"

在这里,按照下面的评论:

一种方法是: ListView.setOnClickListener(null); 要么

你可以添加android:focusable="false" android:focusableInTouchMode="false"或者

另一种布局方式android:listSelector="@android:color/transparent"

干杯。

只需在适配器中覆盖isEnabled(position)并返回false

 @Override public boolean isEnabled(int position) { return false; } 

重写下面的方法。 返回false表示所有项目都不可点击。

  @override public boolean areAllItemsEnabled() { return false; } 

并重写下面的方法返回哪个项目不可点击

 public boolean isEnabled(int position) { if(position == your_item_pos) { return false; } return true; } 
 android:listSelector="@android:color/transparent" 

它将点击的颜色更改为与未点击时相同的颜色! 所以看起来好像是纯文本…这是一个工作。

只需在适配器类中复制此方法。 没事做 ………

 @Override public boolean isEnabled(int position) { return false; } 

您可以设置任何条件来使某些选定的项目不可点击。

 @Override public boolean isEnabled(int position) { //Y for non clickable item if(data_list.get(position).equalsIgnoreCase("Y")) { return false; } return true; } 
 android:focusable="true" 

到listview里面的任何项目现在listview不会点击

你可以使用

 yourListView.setOnItemClickListener(null); 

简单的方法:

 listView.setSelector(android.R.color.transparent); 

试试这个代码

Adapter.getView()

 i.setOnClickListener( null ); i.setLongClickable( false ); i.setClickable( false ); 

只要设置android:enabled =“false”到列表视图,它会做的诀窍。为什么不必要的重写方法..

实际上,@override isEnabled()和setOnClickListener(null)setClickable(false)setLongClickable(false)有没有为我工作。 我解决它覆盖performItemClick

 @Override public boolean performItemClick(View view, int position, long id) { if(!clickAble){ return false; } return super.performItemClick(view,position,id); } 

我有这个ListView只需要显示数据。 所以我不想让它可点击。

我已经在我的一个项目中做了这个,样品波纹pipe工作正常。

基本上,你只需要:

  • 一个数据源(例如ArrayList)
  • 一个ListView控件
  • 一个ArrayAdapter,以便将数据源与ListView绑定

MainActivity.java

 package com.sample.listview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // data source String[] arrayData = {"Debian", "Ubuntu", "Kali", "Mint"}; // ListView Widget from a Layout ListView listView = (ListView) findViewById(R.id.mainListView); // an ArrayAdapter (using a layout as model for displaying the array items) ArrayAdapter aa = new ArrayAdapter<String>(this, R.layout.main_list_item_layout, arrayData); // binding the ArrayAdapter with the ListView Widget listView.setAdapter(aa); } } 

activity_main.xml中
—> 确保ListView Widget使用wrap_content作为layout_width和layout_height

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.sample.listview.MainActivity"> <ListView android:id="@+id/mainListView" android:layout_width="wrap_content" <---- HERE android:layout_height="wrap_content" <---- HERE /> </LinearLayout> 

main_list_item_layout.xml

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainListItem" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#ff0000" android:textSize="20sp" > </TextView> 

就是这样: ListView不可点击,只是在屏幕上显示数据。