我有一个带有ListView的活动,它从ArrayAdapter获取他的数据。 按下我的后退按钮后,我需要一个清晰的ArrayAdapter。我已经阅读了很多stackoverflow问题,但没有任何帮助我。在我的BackbuttonListener上,我尝试了
this.adapter.clear();
this.adapter.notifyDataSetChanged();
但这没效果。谢谢先进的帮助! :)
String[] things;
ArrayList<String> shoppingList;
ArrayAdapter<String> adapter;
ListView lV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
this.shoppingList = getIntent().getExtras().getStringArrayList("shoppingList");
this.things = shoppingList.toArray(new String[shoppingList.size()]);
List<String> items = new ArrayList<String>(Arrays.asList(things));
//Build Adapter
this.adapter = new ArrayAdapter<String>(
this, // Context
android.R.layout.simple_list_item_1, // welches Layout wir benutzen
items); //Items welche wir darstellen wollen
//Configure the ListView
this.lV = (ListView) findViewById(R.id.myListView);
lV.setAdapter(adapter);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
Log.w("MyAPP", String.valueOf(this.adapter.getCount()));
this.adapter.clear();
this.adapter.notifyDataSetChanged();
finish();
}
return super.onKeyDown(keyCode, event);
}
}
答案 0 :(得分:0)
使用以下代码
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
Log.w("MyAPP", String.valueOf(this.adapter.getCount()));
items.clear();
this.adapter.notifyDataSetChanged();
finish();
}
return super.onKeyDown(keyCode, event);
}
答案 1 :(得分:0)
我只是android中的新手......我每次需要刷新列表中的所有项目时都通过创建新的适配器来解决这个问题。我还需要每次都设置所有的监听器,但它有效。对某些系列中的dinamicaly展示物品有没有更好的解决方案?
list_view.getAdapter().clear()
ItemListAdapter adapter = new ItemListAdapter(getApplicationContext(), R.layout.item_row_layout);
list_view.setAdapter(adapter);