Android-从本地数据库读取的列表中获取文本
所以我有一个小数据库,其中有一个城市列表 我把所有的信息都放到列表中,现在我正试图从列表中点击的城市中获取文本。这就是我目前拥有的Android-从本地数据库读取的列表中获取文本,android,list,text,get,Android,List,Text,Get,所以我有一个小数据库,其中有一个城市列表 我把所有的信息都放到列表中,现在我正试图从列表中点击的城市中获取文本。这就是我目前拥有的 package com.example.fiox.casopratico1; /** * Created by FioX on 11/15/2015. */ import android.app.ListActivity; import android.database.Cursor; import android.database.sqlite.SQLiteD
package com.example.fiox.casopratico1;
/**
* Created by FioX on 11/15/2015.
*/
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.provider.BaseColumns;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class Selecionacidade extends ListActivity {
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selecionacidade);
final CidadesSQL dbHelper = new CidadesSQL(Selecionacidade.this);
//fica com uma váriavel do tipo base de dados
final SQLiteDatabase db = dbHelper.getWritableDatabase();
final String[] camposDb = {"cidade", BaseColumns._ID};
//mostramos todos os elementos da base de dados "marcas" de forma ascendente
cursor = db.query("cidades", camposDb, null, null, null, null, "cidade ASC");
// os elementos da lista são passados para o campo text1 que é interno do sistema para usar nas listas
int[] camposView = new int[]{android.R.id.text1};
// são colocados os elementos na lista
final SimpleCursorAdapter adapter = new SimpleCursorAdapter(Selecionacidade.this,
android.R.layout.two_line_list_item, cursor, camposDb, camposView);
setListAdapter(adapter);
}
protected void onListItemClick(ListView l, View v, int position, long id) {
String cidade = l.getChildAt(position).toString();
EditText editText = (EditText)findViewById(R.id.editText2);
editText.setText(cidade);
}
}
遗憾的是,我从l.getchildatposition.tostring得到的结果不是我想要的。它给我一些随机文本,这些文本与Listview对象本身有关。但是,我需要数据库中的城市名称。您需要调用getItemAtPosition来获取行中包含的数据。
getChildAt获取该行中视图的引用,而不是数据。getItemAtPosition为我提供了android.database.sqlite。SQLiteCursor@24be0128,无论我选择哪个城市,这都是我的结果。我做错什么了吗?我明白了,那是因为你用的是游标适配器。您可以尝试从返回的游标对象获取字符串吗?遗憾的是,它不允许我从游标获取字符串。如果有一种不用CursorAdapter就能从数据库中获取信息的方法,我想那会管用吗?