如何在Android Studio中从列表视图(数组列表)中删除项目?



我正在构建一个简单的应用程序,用户可以在其中向列表视图添加一个行,然后在列表视图中单击该项目时,该项目将被删除。

我已经完成了添加部分,但是,在通过单击它删除项目时,我遇到了一个问题。我的Java代码如下:

package com.example.supornochaudhury.schedulerapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import static com.example.supornochaudhury.schedulerapplication.R.id.parent;
import static com.example.supornochaudhury.schedulerapplication.R.id.select_dialog_listview;
public class MainActivity extends AppCompatActivity {
ListView timesTableListView;
ArrayList<String> Works = new ArrayList<String>();

public void startWork (View view){
EditText edit = (EditText) findViewById(R.id.toDoEditText);
String name=edit.getText().toString();
Works.add(name);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, Works );
timesTableListView.setAdapter(arrayAdapter);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timesTableListView = (ListView)findViewById(R.id.timesTableListView);
timesTableListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Toast.makeText(getApplicationContext(), "Click ListItem Number " + position, Toast.LENGTH_LONG).show();
timesTableListView.removeViewAt(position);
}
});
}
}

在我的手机上运行此应用程序后,我可以毫无问题地添加,但是,当我单击任何项目时,应用程序崩溃。

如果有人帮忙,我将不胜感激。 :)

使用 arrayAdapter 作为全局。 然后从数组列表中删除一个项目并使用 notifyDataSetChanged(( 到适配器

timesTableListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Toast.makeText(getApplicationContext(), "Click ListItem Number " + position, Toast.LENGTH_LONG).show();
Works.remov(position);
arrayAdapter.notifyDataSetChanged();
}
});

请先删除从 Works ArrayList 中单击的项目,然后在适配器上调用 notifyDataSetChanged((

最新更新