我有一个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适配器。所以现在我需要你的帮助。
答案 0 :(得分:0)
点击删除按钮:
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());