Я пытаюсь обновить свой ListView при удалении всех элементов. Когда вызывается функция удаления, таблицы sqlite очищаются. эта часть работает нормально. Но я не могу обновить listView. Я попытался notifyDataSetChanged() и invalidate(), но ничего не работает.Обновить ListView не работает
Любые идеи?
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;
}
}
Действительно ли вы меняете значение своих результатов 'ArrayList''? – dymmeh
похоже, что вы сами заполняете список результатов, убедитесь, что вы очистили его, прежде чем вы вызываете 'notifyDataSetChanged()' (что является правильной функцией для обновления адаптера). – x4rf41
@ x4rf41 вы правы. Я забыл очистить результаты ArrayList. – Kody