Android从listview获取数据

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

我目前正在用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, 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));
}
}

哦,天哪,为什么是全局变量?因为它比铸造成本低,先生。