Java 我无法从listview中删除项目

Java 我无法从listview中删除项目,java,android,Java,Android,我使用SharedReferences将数据从一个listview传递到另一个listview。我可以写项目,但不能删除其中的项目。我没有错误,但我没有结果 MyActivity final DataProvider[] providers = gson.fromJson(jsonurun, DataProvider[].class); final List<DataProvider> list = Arrays.asList(providers); listView.setOnI

我使用SharedReferences将数据从一个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();
                        }
                    })
final DataProvider[]providers=gson.fromJson(jsonRun,DataProvider[].class);
最终列表=Arrays.asList(提供者);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
最终数据提供者DataProvider=(数据提供者)adapterView.getItemAtPosition(i);
AlertDialog.Builder=新建AlertDialog.Builder(列表1.this);
builder.setMessage(“Silinsin mi?”)
.setCancelable(错误)
.setPositiveButton(“EVET”,新的DialogInterface.OnClickListener()对话框){
@凌驾
公共void onClick(DialogInterface,inti){
List list1=新数组列表(List);//第二行的列表
列表1.删除(数据提供程序);
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();
}
列表;
公共PrefAdapter(@NonNull上下文,列表){
超级(上下文、右布局、子布局、列表);
this.list=列表;
}
静态类layouthHandler{
文本视图广告,菲亚特;
}
@凌驾
公共无效添加(数据提供程序数据提供程序){
super.add(数据提供者);
notifyDataSetChanged();
}
@凌驾
公共无效删除(数据提供程序对象){
超级。移除(对象);
notifyDataSetChanged();
}

不要创建
列表1
,或者如果出于任何原因需要它,您需要用它重新创建适配器

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

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

不要创建
列表1
,或者如果出于任何原因需要它,您需要用它重新创建适配器

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

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

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

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

我只写'list.remove(dataProvider)',我从这一行得到'java.lang.UnsupportedOperationException'错误消息如果我只写'list.remove(dataProvider)',我从这一行得到'java.lang.UnsupportedOperationException'错误消息