【问题标题】:disable item in listview android java在listview android java中禁用项目
【发布时间】:2016-06-23 11:09:04
【问题描述】:

我正在尝试禁用 listview 中的某些项目,但不能这样做。 我有布尔数组

private boolean[] array; //10 items all false, and some of them true

在我尝试的代码中

for(int i=0;i<array.length();i++){
 if(!array[i]){
   listview.getChildAt(i).setEnabled(false);
 }
}

但我总是在字符串“listview.getChildAt()”上得到 nullpointerexception 如果像这样写

if(listview.getChildAt(i)!=null){ //在这里做代码 }

比我看到字符串“getChildAt(i).setEnabled(false)”没有入口 我对 getChildAt 不太了解,但我正在考虑如何按位置获取项目。任何人都可以帮助我怎么做? 列表视图适配器

public class LevelAdapter extends ArrayAdapter<String> {

      public LevelAdapter(Activity context, ArrayList<String> le, ArrayList<Integer> co, boolean[] bools) {
        super(context, R.layout.listviewitem, le);
        this.context = context;
        this.l = le;
        this.s = co;
        this.boolStates = bools;


    }


    @Override
    public View getView(final int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView= inflater.inflate(R.layout.listviewitem, null, true);

        tvL = (TextView) rowView.findViewById(R.id.l);
        tvC = (TextView) rowView.findViewById(R.id.s);
        tvL.setText(""+l.get(position));
        tvCt.setText(""+s.get(position) + "/3");



        return rowView;
    }

}

问候,彼得。

解决方案

在适配器检查中

if(lvl[position]==false){
            rowView= inflater.inflate(R.layout.listviewitemdisabled, null, true);

            rowView.setEnabled(false);

        }else
        {
            rowView= inflater.inflate(R.layout.listviewitem, null, true);
        }

当点击

 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (view.isEnabled()) {
                     // do our code here

感谢这个简单的解决方案

【问题讨论】:

  • 你如何在这个列表视图中使用适配器?
  • 是的,抱歉,我现在将其添加到 cde

标签: java android listview


【解决方案1】:

您可以在适配器中设置启用状态。

rowView.setEnabled(false)

【讨论】:

  • 我试过了,但项目仍然处于活动状态,我可以按下它们 :(
【解决方案2】:

使用适配器方法。 创建一个适配器和一个 viewHolder 并在 OnBind 方法中获取该列表项并禁用它。 使用方法向适配器发送值并通知适配器有关更改。

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多