从自定义列表视图中删除项目

时间:2016-01-24 15:50:58

标签: android listview

我有一个ListView,我为它做了自定义适配器,名为 Myadp

public class Myadp extends ArrayAdapter {
    private final String[] web;
    private final String[] t;
    public Myadp(Context context, int resource, int textViewResourceId, final String[] objects, String[] total) {
        super(context, resource, textViewResourceId, objects);
        this.web = objects;
        this.t = total;
    }

    @Override
    public View getView(final int position, final View convertView, ViewGroup parent) {

        final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.list_temp, parent, false);

        TextView tv2 = (TextView) row.findViewById(R.id.textView2);
        TextView tv4 = (TextView) row.findViewById(R.id.textView4);


        tv2.setText(web[position]);
        tv4.setText(String.valueOf(t[position]));
        ImageButton del = (ImageButton) row.findViewById(R.id.imageButton);

        del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

        });


        return row;
    }
}

当用户点击del ImageButton时,该项目将被删除。 我尝试了很多,例如我试图从数组中删除该项(web& t数组)并重新调用ListView适配器但是我没有成功,我搜索了google和Stackoverflow但所有的代码仅适用于简单的listview适配器。所以现在我需要你的帮助。

2 个答案:

答案 0 :(得分:0)

点击删除按钮:

  1. 从用于填充ListView
  2. 的List或String []对象中删除元素
  3. 然后致电notifyDataSetChanged()

答案 1 :(得分:0)

在自定义适配器中调用this.notifyDataSetChanged();在哪里执行删除功能并从arrayList中删除该元素,该元素设置为该适配器。如果您知道可以使用哪条记录,则必须从ArrayList中删除已设置为适配器的记录ArrayList.remove(index);然后使用notifyDataSetChanged();

编辑:转到适配器并添加方法delete();

public void delete(int position){
data.remove(position);
notifyItemRemoved(position);
}

在你的onClick();方法添加:

delete(getPosition());