2013-09-24 46 views
1

我有我已经填充到alertDialog的列表视图当alertDialog显示用户能够在列表视图中点击这些项目,那就是问题出现时,我不想用户能够点击列表视图中的项目,我已经尝试将其添加到我的xml布局android:clickable="false"android:focusable="false",但我仍然得到相同的结果。有人可以帮我解决这个问题。试图使列表视图项不可点击

这是我的基本适配器类:

public class MyAdapter extends BaseAdapter { 

     final String[] listItemsFirstRow = {"Item1","Item2"}; 
     final String[] listItemSecondRow = {"Item1", "Item2"}; 

     @Override 
     public int getCount() {  
      return listItemsFirstRow.length; 
     } 

     @Override 
     public Object getItem(int position) { 

      return null; 
     } 

     @Override 
     public long getItemId(int position) { 

      return position; 

     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      if(convertView == null) 
      { 
       LayoutInflater layoutInflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = layoutInflater.inflate(R.layout.twolinelistview, null); 
      } 

      ((TextView)convertView.findViewById(R.id.text1)).setText(listItemsFirstRow[position]); 
      ((TextView)convertView.findViewById(R.id.text2)).setText(listItemSecondRow[position]); 

      return convertView; 

     } 

    } 

,这里是我的XML布局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:gravity="center_vertical" 
    android:paddingLeft="15dip" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 


    <TextView 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="false" 
     android:focusable="false" /> 
    <TextView 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textColor="?android:attr/textColorSecondary" 
     android:id="@+id/text2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="false" 
     android:focusable="false" /> 
</LinearLayout> 
+1

在xml中向您的父级LinearLayout添加android:clickable =“false”。 – nedaRM

回答

3

修改您BaseAdapter覆盖isEnabled告诉ListView中的项目是不可点击。

例子:

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

注意,文件说,这将不正是你想要什么:

返回true如果在指定位置的项目不是一个分隔符。 (分隔符是不可选择的,不可点击的项目)

+0

非常感谢您的帮助! –

0

尝试在XML设置android:clickable="false"android:longClickable="false"您的ListView,或者你可以在你面前设置设置适配器。这应该足以禁用它,但如果不是android:focusable="false"android:enabled="false"肯定应该这样做。

如果您只是试图防止突出显示项目,另一个选项是更改显示选定项目的方式并忽略事件。这是在an older question提出的一个方法是:

android:listSelector="@android:color/transparent"    
android:cacheColorHint="@android:color/transparent"