我有一个ListView
,其中包含5 TextView
个,所以我使用SimpleCursorAdapter
来填充它。数据来自内容提供商。
我的问题是_id
列。我知道我有包含它以使适配器工作。我的问题是,我有5个文本视图,我会为六个列设置投影数组。
static {
from = new String[] {
EmployeeProviderContract.ROW_ID,
EmployeeProviderContract.F_NAME,
EmployeeProviderContract.L_NAME,
EmployeeProviderContract.ROW_EMP_ID,
EmployeeProviderContract.AGE,
EmployeeProviderContract.SEX
};
to = new int[] {
R.id.employee_first_name,
R.id.employee_last_name,
R.id.e_employee_id,
R.id.e_age,
R.id.e_sex
};
}
如您所见,to[]
中有5个项目,from[]
中有6个项目(因为_id)。
mAdapter = new SimpleCursorAdapter(getApplicationContext(),
R.layout.single_row_layout, // The row template
null, // Cursor but we dont have one right now, so NULL. Will come from swapCursor()
from,// Columns to show from
to, // The layout ids i.e individual text views to show the data in
0); // Default 0 as FLAG
因此,当光标返回时,它会在_id
中设置R.id.employee_first_name
的值,依此类推其余值。我不想在文本视图中显示_id
。我无法删除_id,否则会抛出异常。 我该如何解决这个问题?非常愚蠢的问题,但我似乎找不到合适的方法。
这就是内容提供商查询的内容
Cursor returnCursor = db.query(EmployeeProviderContract.EMP_PERSONAL_TABLE_NAME,
projection, selection , selectionArgs, null, null, sortOrder);
注意:我正在延长Activity
而不是ListActivity
。
答案 0 :(得分:1)
也许从ContentProvider返回的Cursor不包含“_id”列。检查数据库表是否具有_id列。最佳实践是在Contract类中的内部类(表类)中实现 BaseColumns 接口,SQLiteOpenHelper的实现使用它来创建数据库。