Android从listview获取数据
我目前正在用listview编写一个应用程序,其中包含来自SQLite表的数据,如下所示:Android从listview获取数据,android,sqlite,listview,Android,Sqlite,Listview,我目前正在用listview编写一个应用程序,其中包含来自SQLite表的数据,如下所示: public void printDatabase(){ Cursor c = handler.getAllRows(); String[] fieldNames = new String[] {DBHandler.COLUMN_WORKER_ID, DBHandler.COLUMN_WORKER_NAME, DBHandler.COLUMN_WORKER_SURNAME, DBHandl
public void printDatabase(){
Cursor c = handler.getAllRows();
String[] fieldNames = new String[] {DBHandler.COLUMN_WORKER_ID, DBHandler.COLUMN_WORKER_NAME, DBHandler.COLUMN_WORKER_SURNAME, DBHandler.COLUMN_WORKER_COST};
int[] toView = new int[] {R.id.item_worker_id, R.id.item_worker_name, R.id.item_worker_surname, R.id.item_worker_cost};
SimpleCursorAdapter cAdapter;
cAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.worker_items, c, fieldNames, toView, 0);
list = (ListView) findViewById(R.id.worker_listView);
list.setAdapter(cAdapter);
}
现在,我想通过单击某个项目从该项目的listview中获取数据。我到处都在寻找解决方案,结果发现:
class ItemListener implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Object o = list.getItemAtPosition(i);
String s = list.toString();
}
}
class ItemListener实现AdapterView.OnItemClickListener{
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
对象o=list.getItemAtPosition(i);
字符串s=list.toString();
}
}
但我从中得到的只是对用于填充listview的光标的引用。从listview获取数据需要什么?试试以下方法:
class ItemListener implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView textView = (TextView) view.findViewById(R.id.list_content);
String text = textView.getText().toString();
//Log.d("Choosen: " + text);
}}
class ItemListener实现AdapterView.OnItemClickListener{
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
TextView TextView=(TextView)view.findViewById(R.id.list\u content);
String text=textView.getText().toString();
//Log.d(“选择:+文本);
}}
您的解决方案已经走到了一半
Cursor itemCursor = (Cursor) list.getItemAtPosition(i);
这将返回一个指向所单击行的光标。您可以通过以下方式从中获取数据:
class ItemListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Cursor itemCursor = (Cursor) list.getItemAtPosition(i);
String workerId = itemCursor.getString(itemCursor.getColumnIndex(DBHandler. COLUMN_WORKER_ID));
String workerName = itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN_WORKER_NAME));
String workerSurname = itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN_WORKER_SURNAME));
String workerCost = itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN_WORKER_COST));
}
}
class ItemListener实现AdapterView.OnItemClickListener{
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Cursor itemCursor=(Cursor)list.getItemAtPosition(i);
String workerId=itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN\u WORKER\u ID));
String workerName=itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN\u WORKER\u NAME));
String workerSurname=itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN\u WORKER\u姓氏));
String workerCost=itemCursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN\u WORKER\u COST));
}
}
使光标成为全局光标
Cursor cursor ;
在你的脸上
class ItemListener implements AdapterView.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
cursor.moveToPosition(position);
String Id = cursor.getString(itemCursor.getColumnIndex(DBHandler. COLUMN_WORKER_ID));
}
}
class ItemListener实现AdapterView.OnItemClickListener{
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
光标。移动位置(位置);
String Id=cursor.getString(itemCursor.getColumnIndex(DBHandler.COLUMN\u WORKER\u Id));
}
}
哦,天哪,为什么是全局变量?因为它比铸造成本低,先生。