web-dev-qa-db-ja.com

Androidでリストビューをクリックすることを無効にする方法は?

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

30
user1625971

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

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

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

90
yahya

すべて簡単に! list.setEnabled(false)

14
Master

空のビューを表示どおりに設定すると、自動的に処理されます。

 <?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>
9

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

public boolean isEnabled(int position);

クリックを無効にする場合は、falseを返します

2
Ben

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

Android:listSelector="@Android:color/transparent" 
Android:cacheColorHint="@Android:color/transparent"
0
Nick Wright

私の要件に応じてこれが好きでした

@Override

public boolean isEnabled(int position) {
        if(data.get(position).isClickable==false)
        {
            return false;
        }
        return super.isEnabled(position);
    }
0
DropAndTrap

おそらくifステートメントを使用して、OnClickのリストビューエントリの内容をチェックできます。'Nodata 'が含まれている場合は何もせず、そうでない場合は通常の操作を行います

0
Broak