Java 我无法从listview中删除项目
我使用SharedReferences将数据从一个listview传递到另一个listview。我可以写项目,但不能删除其中的项目。我没有错误,但我没有结果 MyActivityJava 我无法从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
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'错误消息