データベースの値を入力するListViewがあります。データベースが空の場合、ListViewの最初の項目を「データなし」に設定しています。このアイテムのクリックを無効にします。 ArrayAdapterを使用しました。 areAllItemsEnabled、isEnabledをfalseにしようとしましたが、役に立ちませんでした。 ListViewのisClickableとsetEnabledをfalseに設定しても、役に立ちません。そして、私はOnItemClickListenerのコードをelse条件に入れました。それでもリスト項目がクリック可能になるのを止めません。誰か別の解決策がありますか?ありがとう!
カスタムArrayAdapterでは、isEnabled関数を使用してfalseを返します。
@Override
public boolean isEnabled(int position) {
return false;
}
いつも私のために働いています。
すべて簡単に! list.setEnabled(false)
空のビューを表示どおりに設定すると、自動的に処理されます。
<?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>
そのリストのアダプターを作成し、このメソッドをオーバーライドします
public boolean isEnabled(int position);
クリックを無効にする場合は、false
を返します
ListViewで次の2つの属性を設定してみてください。
Android:listSelector="@Android:color/transparent"
Android:cacheColorHint="@Android:color/transparent"
私の要件に応じてこれが好きでした
@Override
public boolean isEnabled(int position) {
if(data.get(position).isClickable==false)
{
return false;
}
return super.isEnabled(position);
}
おそらくifステートメントを使用して、OnClickのリストビューエントリの内容をチェックできます。'Nodata 'が含まれている場合は何もせず、そうでない場合は通常の操作を行います