15

如何在android的列表视图中禁用特定的列表项?我的意思是,如果一旦我从列表视图中选择了任何一个项目,该项目就会被禁用,这意味着该项目不应再次被选中。这个怎么做?

请提出建议

感谢您宝贵的时间!..

4

6 回答 6

24

尝试在 setOnItemClicklistener() 中使用此代码

if(listview.getChildAt(selectedPosition).isEnabled())
{
    listview.getChildAt(selectedPosition).setEnabled(false);
}
于 2013-07-29T09:02:11.173 回答
23

当您将数据元素列表传递给 时BaseAdapter,在此列表的元素类中添加一个字段,isEnabled并根据需要将其设置为true/ false,然后覆盖如下isEnabled方法BaseAdapter

@Override
public boolean isEnabled(int position) {

    return list.get(position).isEnabled;
}

list您的数据元素对象列表在哪里。

于 2014-12-16T04:05:20.067 回答
11

尝试BaseAdapter.isEnabled()在您的适配器中覆盖,并从您的onItemClick().

于 2013-07-29T08:26:06.697 回答
0
 mlistView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{

 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3)
{
   arg1.setEnabled(false);
 }
}
于 2013-07-29T09:08:52.117 回答
0

当您单击该项目时,它会触发一个布尔值。什么方法会使用该项目让它检查布尔值是否已被触发,例如设置为 false。然后在您的点击部分使用 BaseAdapter.isEnabled() = false;

或者仅凭该布尔值,他们就永远无法再次单击它。

于 2013-07-29T08:50:00.560 回答
0

为了在创建列表时禁用列表项,您必须从 ArrayAdapter 继承。您必须覆盖以下方法: isEnabled(int position)

class MenuAdapter extends ArrayAdapter<String> {

public boolean isEnabled(int position) {
   // return false if position == positionYouWantToDisable
}

}

或者在 Activity 类

public class MainActivity extends Activity {

ListView listview;
ArrayAdapter<String> arrayadapter;

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 listview = (ListView)findViewById(R.id.listView1);
 button = (Button)findViewById(R.id.button1);

 arrayadapter = new ArrayAdapter<String>(MainActivity.this, 
 android.R.layout.simple_list_item_1, subjects);

 listview.setAdapter(arrayadapter);
 listview.getChildAt(1).setEnabled(false);
 }

}

于 2017-06-23T09:50:00.820 回答