单击从列表视图中获取数据

时间:2011-12-13 13:04:54

标签: java android listview onitemclicklistener

我想从列表视图中获取一个字符串点击,这个列表视图是从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);

它让我返回异常

3 个答案:

答案 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);
}
}

并从此答案中查看:https://stackoverflow.com/a/8431438/964741

答案 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);


  }

这是解决方案