我使用sharedpreferences将数据从listview传递到另一个listview。我可以写项目,我无法删除它们的项目。我没有错误,但我没有结果。
MyActivity
final DataProvider[] providers = gson.fromJson(jsonurun, DataProvider[].class);
final List<DataProvider> list = Arrays.asList(providers);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
final DataProvider dataProvider = (DataProvider) adapterView.getItemAtPosition(i);
AlertDialog.Builder builder = new AlertDialog.Builder(Listele1.this);
builder.setMessage("Silinsin mi ?")
.setCancelable(false)
.setPositiveButton("EVET", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
List<DataProvider> list1 = new ArrayList<DataProvider>(list);//list from 2nd line
list1.remove(dataProvider);
prefAdapter.notifyDataSetChanged();
prefAdapter.notifyDataSetInvalidated();
}
})
我的自定义适配器是 PrefAdapter
List<DataProvider> list ;
public PrefAdapter(@NonNull Context context, List<DataProvider> list) {
super(context, R.layout.child_layout,list);
this.list = list;
}
static class LayoutHandler{
TextView ad,fiyat;
}
@Override
public void add(DataProvider dataProvider) {
super.add(dataProvider);
notifyDataSetChanged();
}
@Override
public void remove(DataProvider object) {
super.remove(object);
notifyDataSetChanged();
}
答案 0 :(得分:0)
不要创建list1
,或者如果您因任何原因需要它,您需要使用它重新创建适配器
您应该创建第一个列表,以便从中删除
list = new ArrayList<>(Arrays.asList(providers)):
答案 1 :(得分:0)
您永远不会从适配器中删除该项目。调用适配器上的remove,并更新适配器中的列表,因为你在那里保留了对它的引用。