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);
        }


    }

エラーが発生しています

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

java.lang.NullpointerException として。エラーを見つけようとして、Log.i("check",m_listview.getChildCount()); を使用しました。そして、それは0を示しています。だから、リストビューがまだ作成されていないと推測しています!! そんなことがあるものか。

問題に見えるのは?事前に助けてくれてありがとう。

4

3 に答える 3

16

メソッドをオーバーライドしareAllItemsSelectable()ます。すべてのアイテムがクリックできないことを示すには、false を返します。

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

そして、以下のメソッドをオーバーライドして、クリックできない項目を返します

@Override
public boolean isEnabled(int position) {
    if(position == your_item_pos) {
        return false;
    }
    return true;
}
于 2012-09-14T13:56:11.183 に答える
7

私の経験を共有すると、次のことがうまくいきました(ビューはリストアイテムビューを指します):

view.setEnabled(false);
view.setOnClickListener(null);
  • メソッドが呼び出されなかったため、メソッドをオーバーライドして有効にできませんでした。
  • focusable を false に設定しても機能しませんでした。
于 2013-07-28T09:12:19.760 に答える
0

ListView を初期化していないようです。ListActivityをonCreate 使用m_listview=getListView()している場合、またはm_listview=findViewById(R.id...)通常のアクティビティを使用している場合は使用中です。

于 2012-09-14T17:40:38.583 に答える