Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未从ListView中删除的对象_Java_Android Studio - Fatal编程技术网

Java 未从ListView中删除的对象

Java 未从ListView中删除的对象,java,android-studio,Java,Android Studio,我正在Android Studio中创建一个简单的任务列表应用程序 我有以下两项活动(删除进口和包装规格): MainActivity.java 公共类MainActivity扩展AppCompativeActivity实现View.OnClickListener、AdapterView.OnItemClickListener{ 编辑文本任务添加; 按钮添加; 公共列表视图任务; 公共整数pos=0; 公共数组列表任务数组; 公共阵列适配器; @凌驾 创建时受保护的void(Bundle sav

我正在Android Studio中创建一个简单的任务列表应用程序

我有以下两项活动(删除进口和包装规格):

MainActivity.java

公共类MainActivity扩展AppCompativeActivity实现View.OnClickListener、AdapterView.OnItemClickListener{
编辑文本任务添加;
按钮添加;
公共列表视图任务;
公共整数pos=0;
公共数组列表任务数组;
公共阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
taskAdd=findviewbyd(R.id.taskAdd);
add=findviewbyd(R.id.add);
tasks=findviewbyd(R.id.tasks);
taskArray=FileHelper.readData(此);
adapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,taskArray);
tasks.setAdapter(适配器);
add.setOnClickListener(这个);
tasks.setOnItemClickListener(this);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.add:
输入的字符串=taskAdd.getText().toString();
如果(已输入!=“||已输入!=null |已输入!=“null”){
adapter.add(已输入);
taskAdd.setText(“”);
writeData(taskArray,this);
Toast.makeText(这是“添加任务!”,Toast.LENGTH_SHORT.show();
}
打破
}
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
pos=位置;
意向意向=新意向(MainActivity.this、Pop.class);
星触觉(意向);
}
@凌驾
受保护的void onNewIntent(意图){
super.onNewIntent(意向);
设定意图(intent);
processExtraData();
}
私有void processExtraData(){
Bundle extras=getIntent().getExtras();
如果(附加值!=null){
int value=extras.getInt(“value”);
如果(值==1){
taskArray.remove(pos);
adapter.notifyDataSetChanged();
Toast.makeText(此“任务已删除!”,Toast.LENGTH_SHORT.show();
}
}
}
}
java(弹出窗口)

公共类Pop扩展活动实现View.OnClickListener{
按钮删除按钮;
按钮完成按钮;
按钮时间按钮;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.popwindow);
deleteButton=findViewById(R.id.deleteButton);
DisplayMetrics dm=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width=dm.widthPixels;
int height=dm.heightPixels;
getWindow().setLayout((int)(宽度*0.5),(int)(高度*0.5));
deleteButton.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
意图i=新意图(此,MainActivity.class);
i、 putExtra(“值”,1);
星触觉(i);
}
}
在我单击Pop.java中的deleteButton之后,MainActivity.java中的processExtraData应该运行。Toast确实会出现,但不会删除ListView中的选定对象。也不会抛出任何错误。此外,使用Log.d检查taskArray的大小证实了这不仅仅是一个图形问题。为什么会出现这种情况,我应该如何着手解决


感谢您提前回复。

问题在于您使用的是对象引用而不是基本数据类型,因此当您调用taskArray.remove(pos)时,它会查找对象而不是其表示的整数值

而不是:

taskArray.remove(pos);
尝试:


您能告诉我您是如何知道该对象没有从列表中删除的吗?如果执行System.out.println(taskArray.size())操作;taskArray前后。移除(位置);,它是否提供相同的价值?如果不是,则更有可能是GUI更新问题。感谢您这么快的响应!使用Log.d证明没有删除pos,这不是GUI更新问题。
taskArray.remove(pos.intValue());