我无法从列表视图中删除项目

时间:2017-06-18 22:08:32

标签: java android

我使用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();
}

2 个答案:

答案 0 :(得分:0)

不要创建list1,或者如果您因任何原因需要它,您需要使用它重新创建适配器

您应该创建第一个列表,以便从中删除

list = new ArrayList<>(Arrays.asList(providers)):

答案 1 :(得分:0)

您永远不会从适配器中删除该项目。调用适配器上的remove,并更新适配器中的列表,因为你在那里保留了对它的引用。