31

データベースの値を入力しているListViewがあります。データベースが空の場合、ListViewの最初の項目を「データなし」に設定しています。このアイテムのクリックを無効にしたい。ArrayAdapterを使用しました。areAllItemsEnabled、isEnabledをfalseにしようとしましたが、役に立ちませんでした。ListViewのisClickableとsetEnabledをfalseに設定しても、役に立ちません。そして、OnItemClickListenerのコードをelse条件に入れましたが、それでもリストアイテムのクリックが停止することはありません。誰かが別の解決策を持っていますか?ありがとう!

4

7 に答える 7

95

カスタムArrayAdapterで、isEnabled関数を使用してfalseを返します。

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

いつも私のために働きます。

于 2012-10-30T20:03:00.373 に答える
16

ずっと簡単!list.setEnabled(false)

于 2014-06-08T22:58:22.760 に答える
9

表示されているように空のビューを設定すると、自動的に処理されます。

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

     <ListView android:id="@android:id/list"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"
               android:drawSelectorOnTop="false"/>

     <TextView android:id="@android:id/empty"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:text="No data"/>
 </LinearLayout>
于 2012-10-30T19:58:22.027 に答える
3

ListViewで次の2つの属性を設定してみてください。

android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
于 2018-12-20T13:05:32.733 に答える
2

そのリストのアダプタを作成し、そこでこのメソッドをオーバーライドします

public boolean isEnabled(int position);

falseクリックを無効にしたいときに戻ります

于 2014-05-15T12:04:52.267 に答える
0

おそらく、ifステートメントを使用してOnClickのリストビューエントリの内容を確認できます。「データなし」が含まれている場合は何もしません。それ以外の場合は通常の操作を行います。

于 2012-10-30T19:58:33.260 に答える
0

私は私の要件に従ってこれが好きでしたそれがあなたに何らかの方法で役立つことを願っています

@Override

public boolean isEnabled(int position) {
        if(data.get(position).isClickable==false)
        {
            return false;
        }
        return super.isEnabled(position);
    }
于 2014-09-19T06:12:04.400 に答える