Android 如何使listview的某些项不可单击?

Android 如何使listview的某些项不可单击?,android,android-listview,Android,Android Listview,我有以下代码,很容易理解。我希望此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(section

我有以下代码,很容易理解。我希望此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);
        }


    }
@Override
public boolean areAllItemsSelectable() {
    return false;
}
作为java.lang.NullpointerException。我试图找到错误并使用Log.I(“check”,m_listview.getChildCount());它显示0。所以我猜listview还没有创建!!这怎么可能呢


有什么问题吗?Thanx提前获取任何帮助。

覆盖
AreaAllItemsSelectable()
方法。返回false表示所有项目都不可单击

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


    }
@Override
public boolean areAllItemsSelectable() {
    return false;
}
然后重写下面的方法以返回不可单击的项

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

似乎您没有初始化ListView。在
onCreate
中,如果您使用的是ListActivity,请使用
m_listview=getListView()
如果您使用的是常规活动,请使用
m_listview=findViewById(R.id…)

分享我的经验,下面的技巧成功了(视图指列表项视图):

  • 通过重写该方法启用该方法无效,因为该方法从未被调用
  • 将focusable设置为false也不起作用

发布您的错误是什么getting@slezadav:plzz查看更新的问题。我猜我的listview不是在调用这些语句之前创建的??这个方法阻止了分隔线显示在我的列表项之间。相反,我在ListView
android:listSelector=“@android:color/transparent”
的XML中设置了以下属性,它对我有效。