我想从列表视图中获取一个字符串点击,这个列表视图是从bbdd填充的,我认为这段代码没问题,但是没有用。
//Creamos la instancia de DataBaseHelper, un cursor y aplicamos el metodo getNombres al cursor y llamamos al metodo encargado de gestioanr ese cursor
ayudabbdd = new DataBaseHelper(this);
Cursor nombresC;
nombresC = (Cursor) ayudabbdd.getNombres();
nombresC.moveToFirst();
startManagingCursor(nombresC);
//Para crear un simpleCursorAdapter necesitamos
//Contexto this
//Layour donde se mostrara el resultado, generalmente un textview
//Cursor
//Cual sera el campo que recibiremos de la BBDD
//Donde tenemos que poner esa informacion, generalmente el ID correspondiente al textvies del layour del segundo parametro
String[] from = new String[]{DataBaseHelper.CNOMBRE};
int[] to = new int[]{R.id.nombreLugar};
SimpleCursorAdapter lugares =
new SimpleCursorAdapter(this, R.layout.entrada_lista, nombresC, from, to);
setListAdapter(lugares);
listanombres = (ListView) findViewById(android.R.id.list);
listanombres.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String nombreSelec;
nombreSelec = (String) listanombres.getItemAtPosition(arg2);
Intent intent = new Intent(listatab.this, mostrarLugar.class);
intent.putExtra("nombre", nombreSelec);
startActivity(intent);
}
我正在进行调试,而nombreSelec值为android.database.sqlite.SQLiteCursor@41496db0
我正在尝试这个
String nombreClicks = nombresC.getString((int) arg3);
intent.putExtra("nombre",nombreClicks);
startActivity(intent);
它让我返回异常
答案 0 :(得分:0)
试试这个
public class CheckData extends ListActivity {
TextView selection;
public int idToModify;
DataManipulator dm;
List<String[]> list = new ArrayList<String[]>();
List<String[]> names2 =null ;
String[] stg1;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.check);
dm = new DataManipulator(this);
names2 = dm.selectAll();
stg1=new String[names2.size()];
int x=0;
String stg;
for (String[] name : names2) {
stg = name[1]+" – "+name[2]+ " – "+name[3]+" – "+name[4];
stg1[x]=stg;
x++;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,stg1);
this.setListAdapter(adapter);
selection=(TextView)findViewById(R.id.selection);
}
public void onListItemClick(ListView parent, View v, int position, long id) {
String nombreSelec = selection.setText(stg1[position]);
Intent intent = new Intent(listatab.this, mostrarLugar.class);
intent.putExtra("nombre", nombreSelec);
startActivity(intent);
}
}
答案 1 :(得分:0)
试试这个,让我知道发生了什么,......
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Cursor cursor = (Cursor) lugares.getItem(arg2);
String nombreSelec = cursor.getString(cursor.getColumnIndex(DataBaseHelper.CNOMBRE));
Intent intent = new Intent(listatab.this, mostrarLugar.class);
intent.putExtra("nombre", nombreSelec);
startActivity(intent);
}
看看这个很好的例子First list application
答案 2 :(得分:0)
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent(listatab.this, mostrarLugar.class);
String nombreClicks= nombresC.getString(nombresC.getColumnIndex("nombre"));
intent.putExtra("nombre",nombreClicks);
startActivity(intent);
}
这是解决方案