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。所以我猜listview还没有创建!这怎么可能。

似乎是什么问题?感谢您提前提供任何帮助。

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 或使用常规活动,则In onCreate Use 。m_listview=getListView()m_listview=findViewById(R.id...)

于 2012-09-14T17:40:38.583 回答