【问题标题】:How to remove a item in listview?如何删除列表视图中的项目?
【发布时间】:2018-01-09 19:04:01
【问题描述】:

我正在创建一个包含 2 行名称和流派的播放列表,如何删除它。

这是 MainActivity :

String[] gene, sl;
...
adp = new Adapter(MainActivity.this, gene, sl);       
     lv.setAdapter(adp);   

这是适配器

public class Adapter extends ArrayAdapter<String> {

   private final Activity context;
   private final String[] gene;
   private final String[] sl;

   SharedPreferences preferences;
   public Adapter(Activity context, String[] gene ,String[] sl) {     
   super(context, R.layout.activity_m , gene);

       this.context = context;
       this.gene = gene;
       this.sl = sl;
       }

private class ViewHolder{
  TextView txtgene, txtsl;
}
       @Override 
     public View getView(final int position, View view, ViewGroup parent) {       
       ViewHolder holder;       
       if (view == null) {       
        LayoutInflater inflater = context.getLayoutInflater();
        view = inflater.inflate(R.layout.activity_m, null, true);
     holder = new ViewHolder();        
     holder.txtgene = (TextView) view.findViewById(R.id.txtgene); 
     holder.txtsl = (TextView) view.findViewById(R.id.txtsl);

    view.setTag(holder);
      }else{
      holder = (ViewHolder) view.getTag();
      }
      if (gene[position] != null) {
    holder.txtgene.setText(gene[position]); 
    }
      holder.txtsl.setText(sl[position]);
       return view;
        }
    }

当你知道它的确切位置时如何移除一个项目?

谢谢!

【问题讨论】:

    标签: java android listview adapter android-arrayadapter


    【解决方案1】:

    您正在使用带有数组的 ArrayAdapter 构造函数。这反过来会在 ArrayAdapter 内部创建一个不可变的列表。因此,您将无法修改您的适配器走这条路线。

    相反,从您的数组中创建一个新的 ArrayList 并调用采用 List 的 ArrayAdapter 构造函数。

    因此,将 Adapter 构造函数中的超级调用更改为:

    super(context, R.layout.activity_m, new ArrayList<>(Arrays.asList(gene)));
    

    然后,当你想删除一个给定位置的项目时,这样做:

    adp.remove(getItem(position));
    

    PS:您应该考虑将您的基因和 sl 数组重构为一个类,然后将其用作您的 List 的类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      相关资源
      最近更新 更多