android – 使用自定义适配器从ListView中删除项目
作者:互联网
我有一个自定义ListView和适配器.我可以从我的列表中删除我自定义列表中设置的项目,但我可以从ListView中删除.当我尝试调用adapter.remove(position)时,编辑器会说“创建方法”remove(int position)“”.我不知道在将此方法创建到适配器时应该怎么做.代码:
填写我的列表视图:
lv = (ListView) findViewById(R.id.list);
LayoutInflater mLInflater = getLayoutInflater();
final ListViewAdapter adapter = new ListViewAdapter(
getApplicationContext(), kimdenlist, konulist,
mLInflater);
lv.setAdapter(adapter);
ListViewAdapter:
public class ListViewAdapter extends BaseAdapter {
static HashMap<Integer, Boolean> cartItems = new HashMap<Integer, Boolean>();
Context mContext;
ArrayList<String> kimdenlist; // to load images
ArrayList<String> konulist; // for data
LayoutInflater mLayoutInflater;
public ListViewAdapter(Context context, ArrayList<String> kimdenlist, ArrayList<String> konulist,
LayoutInflater layoutInflater) {
mContext = context;
this.kimdenlist = kimdenlist;
this.konulist = konulist;
mLayoutInflater = layoutInflater;
}
@Override
public int getCount()
{
return kimdenlist.size(); // images array length
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
int count = 0;
// customized Listview
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
View v;
final int pos = position;
v = mLayoutInflater.inflate(R.layout.listust, null);
TextView kimden = (TextView) v.findViewById(R.id.textvKimden);
kimden.setText(kimdenlist.get(position));
TextView konu = (TextView) v.findViewById(R.id.textvKonu);
konu.setText(konulist.get(position));
CheckBox ch = (CheckBox) v.findViewById(R.id.chk);
try {
if (count != 0) {
boolean b = cartItems.get(pos);
if (b == false)
ch.setChecked(false);
else
ch.setChecked(true);
}
} catch (NullPointerException e) {
}
ch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
cartItems.put(pos, arg1);
count++;
}
});
return v;
}
public static HashMap<Integer, Boolean> getcartItems() {
return cartItems;
}
}
当我点击“delete_Button”时:我只能从列表中删除:
konulist.remove(konulist.get(position));;
kimdenlist.remove(kimdenlist.get(position));
解决方法:
这是因为你的listViewAdapter没有删除方法!您扩展BaseAdapter并且它没有删除方法.你应该在listviewAdapter中创建remove方法,它看起来像
public void remove(int position){
konulist.remove(konulist.get(position));;
kimdenlist.remove(kimdenlist.get(position));
}
您必须了解列表视图和适配器的工作原理.适配器保存listview的数据.将在创建列表行时调用适配器方法getView.列表大小由适配器的getCount()返回的值计算,依此类推……
标签:android,android-listview,customization,adapter 来源: https://codeday.me/bug/20190715/1469907.html