0

すべての項目を削除したときに、ListView を更新しようとしています。delete 関数が呼び出されると、sqlite-tables がクリアされます。この部分は正常に動作します。しかし、リストビューを更新できません。notifyDataSetChanged() と invalidate() を試しましたが、何も機能しません。

何か案は?

public class ResultsAdapter 
        extends BaseAdapter {

    private LayoutInflater inflater;

    private ResultsTypeOneOpenHelper    resultsTypeOne_db;
    private ResultsTypeTwoOpenHelper    resultsTypeTwo_db;
    private ResultsTypeThreeOpenHelper  resultsTypeThree_db;


    private ArrayList<Object> results;

    static class ViewHolder {
        TextView text;
    }

    public ResultsAdapter(Context context) {
        this.inflater = LayoutInflater.from(context);

        resultsTypeOne_db = new ResultsTypeOneOpenHelper(context);
        resultsTypeTwo_db = new ResultsTypeTwoOpenHelper(context);
        resultsTypeThree_db = new ResultsTypethreeOpenHelper(context);
        results = new ArrayList<Object>();

        /* get results from sqlite */
        if (resultsTypeOne_db.getRowCount() != 0) {
            results.addAll( resultsTypeOne_db.getAllTypeOneResults() );
        }
        if (resultsTypeTwo_db.getRowCount() != 0) {
            results.addAll( resultsTypeTwo_db.getAllTypeTwoResults() );
        }
        if (resultsTypeThree_db.getRowCount() != 0) {
            results.addAll( resultsTypeThree_db.getAllTypeThreeResults() );
        }
    }

    @Override
    public int getCount() {
        return results.size();
    }

    @Override
    public Object getItem(int position) {
        Object item = results.get(position);
        return item;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View rowView = convertView;
        ViewHolder viewHolder;

        if (rowView == null) {
            rowView = inflater.inflate(R.layout.results_list_row, null);
            viewHolder = new ViewHolder();
            viewHolder.text = (TextView) rowView.findViewById(R.id.results_list_textView);
            rowView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) rowView.getTag();
        }
        viewHolder.text.setText( results.get(position).toString() );

        return rowView;
    }
}
4

3 に答える 3

1

もう一度電話setListAdapterしてみてくださいListActivity。すべてのアイテムが削除されたら、 を使用している場合は/メソッドのsetListAdapterメソッドを呼び出し、 を使用していない場合はメソッドを呼び出します。ListActivitysetAdapterListViewActivityListActivity

于 2013-04-22T13:34:43.390 に答える
0

データを削除した後、最初に ArrayList をクリアしてから、新しいデータを再度取得して ArrayList に保存し、ListView メソッド setListAdapter(adapter) を使用した後

于 2013-04-23T06:34:25.530 に答える