2012-09-14 12 views
5

私は非常に理解しやすい以下のコードを持っています。このリストビューの特定の子をクリックできないようにしたい。リストビューの一部のアイテムをクリックできないようにするにはどうすればいいですか?

ArrayAdapter<String> adapter = 
     new ArrayAdapter<String>(this,R.layout.list_item,R.id.module_name_item, testdata); 

    m_listview.setAdapter(adapter); 


    Log.i("check","1"); 
    if(sectionAttempts.get(0).equals("0")) 
    { 

     m_listview.getChildAt(2).setEnabled(false); 
     m_listview.getChildAt(3).setEnabled(false); 
    } 
    else 
    { 

     if(sectionAttempts.get(2).equals("0")) 
     { 

      m_listview.getChildAt(3).setEnabled(false); 
     } 


    } 

私はjava.lang.NullPointerExceptionがよう

m_listview.getChildAt(2).setEnabled(false); 

でエラーを取得しています。エラーを探して、Log.i( "check"、m_listview.getChildCount());を使用しました。そして、それは0を示しています。私はlistview hasnt beentがまだ作成されていると推測しています!そんなことがあるものか。

どのような問題があるようですか?任意の助けを前にThanx。

+0

投稿するにはエラーが発生しました – slezadav

+0

@slezadav:plzzは更新された質問をご覧ください。私はそれらのステートメントを呼び出す前に私のlistview isntを推測していますか? – Abhinav

答えて

15

areAllItemsSelectable()メソッドを上書きします。 falseを返すと、すべての項目をクリックできません。

@Override 
public boolean areAllItemsSelectable() { 
    return false; 
} 

そして

@Override 
public boolean isEnabled(int position) { 
    if(position == your_item_pos) { 
     return false; 
    } 
    return true; 
} 
+0

私のコードの問題は何ですか? – Abhinav

+0

非常に良い解決策は、すべてのことを考えるGoogle –

+0

このメソッドは、私のリストアイテムの間にセパレータラインを表示することを防ぎました。代わりに、私はListViewのアンドロイド:listSelector = "@アンドロイド:色/透明"のXMLで次のプロパティを設定し、それは私のために働いた。 – Richard

0

クリックできないどの項目を返すためにメソッドを下回るオーバーライドあなたのListViewをinitilizeなかったかのように思われます。 In onCreate ListActivityを使用している場合はm_listview=getListView()、通常の操作を使用する場合はm_listview=findViewById(R.id...)を使用します。

7

私の経験を共有し、次のことが(ビューがリスト項目のビューを参照)トリックをした:メソッドが呼び出されていなかったように動作しませんでしたメソッドをオーバーライドすることで可能

view.setEnabled(false); 
view.setOnClickListener(null); 
  • falseにフォーカスを設定しても機能しませんでした。
関連する問題