在Android中的SimpleAdapter中删除或清除内容?

时间:2013-09-20 20:22:15

标签: java android android-adapter

以下是代码:

ibtSearchStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            try{
                searchQuery = etSearchThis.getText().toString();
                searchQuery = searchQuery.toUpperCase();
                cursor = searchActivity.getData(product, "product", tableColumns);

                //Clean ArrayList
                resultRow.clear();
                resultTable.clear();

                //Get Search Result
                resultTable  = searchActivity.searchByProductName(cursor, searchQuery);

                //Display Search Result
                for(int ctr = 0; ctr < resultTable.size(); ctr++){
                    HashMap<String, String> map = new HashMap<String, String>();
                    resultRow = resultTable.get(ctr);
                    String result = resultRow.get(2);
                    map.put("ProductName",result);
                    list.add(map);

                }
                Log.e("resultProduct", "" + list);
                adapter = new SimpleAdapter(
                        SearchMain.this,
                        list,
                        R.layout.search_result,
                        new String[]{"ProductName"},
                        new int[]{R.id.tvProductName}
                    );
                lvSearchResult.setAdapter(adapter);     

            }
            finally{
                product.close();
            }
        }
    });

这个功能是它会在数据库中搜索匹配,然后它会在HashMap中插入搜索结果,然后在适配器上插入。

但是每次点击我都无法删除之前的结果。 对此有什么适当的实施?

2 个答案:

答案 0 :(得分:1)

使用适配器并更改信息时,请确保拨打adapter.notifyDataSetChanged();

答案 1 :(得分:0)

每次触发OnClick事件时都会设置一个新适配器。正如Jay Snayder所写,你应该使用adapter.notifyDataSetChanged();代替。但是一定要只设置适配器一次并移动代码的以下部分(例如,移动到活动的onCreate()方法):

adapter = new SimpleAdapter(
                    SearchMain.this,
                    list,
                    R.layout.search_result,
                    new String[]{"ProductName"},
                    new int[]{R.id.tvProductName}
                );
            lvSearchResult.setAdapter(adapter);

只需更新适配器的DataSet(此处:'list')。