我正在尝试从ListView
中删除项目。但是,在致电notifyDataSetChanged()
后,我的ListView
无法刷新,而是在我点击EditText
后刷新。我也尝试使用adapter.remove方法,但是产生了同样的错误。为什么会这样?
代码:
public class AddWordActivity extends Activity {
private static ArrayList<String> words = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_word);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, words);
final ListView listView = (ListView) findViewById(R.id.wordsListView);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> a, View v, final int position, long id) {
words.remove(position);
adapter.notifyDataSetChanged();
}
});
}
答案 0 :(得分:1)
我在我的代码中实现了这样,它适用于我
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
MyAdatper adapter=(MyAdatper)parent.getAdapter();
adapter.remove(myStringArray.get(position));
adapter.notifyDataSetChanged();
}
答案 1 :(得分:0)
你应该使用adapter.remove(position)而不是words.remove(position)。 如果你想使用word.remove(position),那么你需要再次将适配器设置为ListView,因为ArrayList单词中有更改的数据。否则你可以使用adapter.remove(pos);方法
答案 2 :(得分:0)
您是否在ArrayList中添加了项目?请添加标识,否则您的代码是完美的。
答案 3 :(得分:0)
似乎“words”数组列表将是您的项侦听器的本地。因此,不要尝试从单词中删除值,而是尝试从适配器本身中删除它。干杯:)