通过按下后退按钮,arrayadapter clear()无法正常工作

时间:2014-03-07 11:10:09

标签: android arraylist clear

我有一个带有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);
}

}

2 个答案:

答案 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);