通过检查数据库状态来浏览ListView中的TextView项

时间:2014-12-31 15:02:21

标签: android sqlite listview android-listview simplecursoradapter

我是Android的初学者,我有一个ListView,可以使用SQLite上的代码从onCreate数据库加载数据:

Cursor cursor = dbAdapter.getAllTasks();
String[] fromFields = new String[] {dbAdapter.dbHelper.KEY_TASK};

int[] toView = new int[] {R.id.task};
SimpleCursorAdapter myCursorAdapter;
myCursorAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.task_items, cursor, fromFields, toView, 0);

ListView myList = (ListView) findViewById(R.id.taskList);
myList.setAdapter(myCursorAdapter); 

我有数据库字段task (text), done (boolean) and date (text)

我可以使用此代码在项目点击ListView上的TextView中切换浏览,我可以在此更改数据库字段done

ListView myList = (ListView) findViewById(R.id.taskList);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

         TextView v = (TextView) view.findViewById(R.id.task);

         if ((v.getPaintFlags() & Paint.STRIKE_THRU_TEXT_FLAG) > 0){
            v.setPaintFlags( v.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG));
         } else {
            v.setPaintFlags(v.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
         }
         // calling update method to change done value in db
     }
});

现在,在加载ListView时,如何查看标记为已完成(done = 1)的所有项目。

1 个答案:

答案 0 :(得分:2)

由于您使用的是SimpleCursorAdapter,请将a ViewBinder附加到应用删除线的地方。您的setViewValue()会检查您的Cursor以查看是否已完成,然后会setPaintFlags()TextView进行相应的调用(View向下转发TextView传入)。此外,您需要自己在false上设置文本,或者特别返回{{1}}以指示应该应用默认绑定。