如何使listview的某些项目无法点击?

Abh*_*nav 5 android android-listview

我有以下代码,这很容易理解.我希望此列表视图中的某个特定子项不可点击.

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


    }
Run Code Online (Sandbox Code Playgroud)

我收到了错误

  m_listview.getChildAt(2).setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

as java.lang.NullpointerException.我试图找到错误并使用Log.i("check",m_listview.getChildCount()); 它显示0.所以我猜列表视图还没有创建!怎么可能.

什么似乎是问题?Thanx提前提供任何帮助.

knv*_*rma 16

覆盖areAllItemsSelectable()方法.返回false表示所有项目都不可点击.

@Override
public boolean areAllItemsSelectable() {
    return false;
}
Run Code Online (Sandbox Code Playgroud)

然后覆盖下面的方法以返回哪个项目不可点击

@Override
public boolean isEnabled(int position) {
    if(position == your_item_pos) {
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*aka 7

分享我的经验,以下做了诀窍(视图指的是列表项视图):

view.setEnabled(false);
view.setOnClickListener(null);
Run Code Online (Sandbox Code Playgroud)
  • 通过重写方法启用不起作用,因为从未调用该方法.
  • 将焦点设置为false也不起作用.