在结果显示在列表视图中之前,我无法弄清楚如何从SQLite DB中过滤掉特定结果。没有看到包含当前日期的值,我想知道如果检索到的月份和年份不等于我之前设置的值,那么它们将不会显示。
设置当前日期的2个值是currentMonth和currentYear。 (未在下面的代码中显示)。
ArrayList<HashMap<String, String>> dates = dbTools.getAllContacts();
final ListAdapter adapter = new SimpleAdapter( NameOfClass.this, dates, R.layout.exp_item_entry,
new String[] {"month", "year"},
new int[] {R.id.MonthTextView, R.id.YearTextView});
setListAdapter(adapter);
感谢您的帮助!
答案 0 :(得分:1)
easy 答案是:在rawQuery中使用WHERE
子句。
真实答案是:它实际上取决于您想要的过滤器
您可以使用Like
s,JOIN
,aggregation functions
,WHERE
,GROUP BY
,HAVING
,...或这些的任意组合。
答案 1 :(得分:0)
您可以使用BaseAdapter并修改信息,并在调用notifyDataSetChanged后刷新ListView。
class MyAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList<HashMap<String, String>> dates;
public MyAdapter(LayoutInflater inflater, ArrayList<HashMap<String, String>> dates){
this.inflater = inflater;
this.dates = dates;
}
public void setDates(ArrayList<HashMap<String, String>> dates) {
this.dates = dates;
}
@Override
public int getCount() {
return dates.size();
}
@Override
public HashMap<String, String> getItem(int i) {
return dates.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//Definition of your views to use.
TextView monthTextView = null;
TextView yearTextView = null;
if(view == null) {
//Inflate the item.
view = inflater.inflate(R.layout.exp_item_entry, null);
//Your findViewById to link the views
monthTextView = (TextView)view.findViewById(R.id.monthTextView);
yearTextView = (TextView)view.findViewById(R.id.yearTextView);
}
//What you wanna do with the views linked up.
HashMap<String, String> item = getItem(i);
monthTextView.setText(item.get("month"));
yearTextView.setText(item.get("year"));
return view;
}
在ListView中使用适配器:
MyAdapter myAdapter = new MyAdapter(getLayoutInflater(), dates);
...
listView.setAdapter(myAdapter);
要更新信息,您可以使用WHERE执行rawQuery来过滤信息,您只需要将过滤后的日期放在适配器中并调用notifyDataSetChanged。
myAdapter.setDates(filteredDates); myAdapter.notifyDataSetChanged();