Obtener el elemento seleccionado de customadapter listview Android

lo que he estado haciendo es sobre customadapter. Ahora quiero conseguir el artículo seleccionado de mi listview, pero su adaptador es costumbre. En mi listview, tengo una imagen, título y un título, quiero obtener el elemento seleccionado, en mi caso sólo el título. ¿Cómo puedo hacer eso?

Esto es lo que he probado hasta ahora:

@Override public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { String strHouseName = "house_name"; String strHousePrice = "house_price"; //String selectedFromList =(String) (lv.getItemAtPosition(pos)); Intent i; switch(pos){ case 0: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "5 Dina Retreat, Carrum Downs"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; case 1: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 941 Cob Terrace, Clyde North"); i.putExtra(strHousePrice, "$800,000.00"); startActivity(i); break; case 2: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 932 Ventasso Street, Clyde"); i.putExtra(strHousePrice, "$1,000,000.00"); startActivity(i); break; case 3: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 515 Summerhill Blvd, Drouin"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; case 4: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 17 Todman Street, Drouin (Option 2)"); i.putExtra(strHousePrice, "$550,000.00"); startActivity(i); break; case 5: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 32 Aqueduct Road, Langwarrin"); i.putExtra(strHousePrice, "$600,000.00"); startActivity(i); break; case 6: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Units 2-7, 269 North Road, Langwarin"); i.putExtra(strHousePrice, "$450,000.00"); startActivity(i); break; case 7: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "U 39, 40-60 Potts Road, Langwarrin"); i.putExtra(strHousePrice, "$1,300,000.00"); startActivity(i); break; case 8: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 1 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$2,000,000.00"); startActivity(i); break; case 9: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 2 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; case 10: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 3 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$900,000.00"); startActivity(i); break; case 11: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 4 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$600,000.00"); startActivity(i); break; case 12: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 5 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$1,200,000.00"); startActivity(i); break; case 13: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 7 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$700,000.00"); startActivity(i); break; case 14: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 11 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$500,000.00"); startActivity(i); break; case 15: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 12 McClenaghan Place, Pakenham"); i.putExtra(strHousePrice, "$3,000,000.00"); startActivity(i); break; case 16: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 532 Summerhill Blvd, Drouin"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; case 17: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 17 Ajax Street, Drouin"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; case 18: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 133 Mountainview Blvd, Cranbourne North"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; case 19: i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, "Lot 531 Summerhill Blvd, Drouin"); i.putExtra(strHousePrice, "$300,000.00"); startActivity(i); break; default: Log.d(strHouseName, "No such house name available"); } } class MyCustomAdapter extends BaseAdapter { String[] data_text1; String[] data_text2; int[] data_image; MyCustomAdapter() { data_text1 = null; data_text2 = null; data_image = null; } MyCustomAdapter(int[] image, String[] house, String[] price) { data_text1 = house; data_text2 = price; data_image = image; } public int getCount() { return data_text1.length; } public String getItem(int position) { return null; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = getLayoutInflater(); View row; row = inflater.inflate(R.layout.listrow, null); TextView textview1 = (TextView) row.findViewById(R.id.text1); TextView textview2 = (TextView) row.findViewById(R.id.text2); ImageView imageview = (ImageView) row.findViewById(R.id.image); imageview.setScaleType(ImageView.ScaleType.FIT_XY); textview1.setText(data_text1[position]); textview2.setText("$" + (new DecimalFormat("#,###.00")).format(Double.parseDouble(data_text2[position])) ); imageview.setImageResource(data_image[position]); return (row); } } 

Por el momento, me acaba de obtener a través de su posición, pero el problema es, ¿qué pasa si la lista está ordenada? ¿Cómo puede obtener el elemento seleccionado correctamente? ¿Algunas ideas? Lo agradecería gustoso. Gracias.

Prueba esto..

 @Override public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { TextView textview1 = (TextView) v.findViewById(R.id.text1); TextView textview2 = (TextView) v.findViewById(R.id.text2); Log.v("textview1",textview1.getText().toString().trim()); Log.v("textview2",textview2.getText().toString().trim()); } 

En el elemento haga clic en obtener la vista actual, obtenga ui elementos ex título de TextView y enviarlos a la intención

 @Override public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { if (v== null) v= inflater.inflate(R.layout.list_row_layout, null); // reached in case of listview bug in android which is a little chance but to make sure not to crash on NPE String title = ((TextView) v.findViewById(R.id.list_row_title)).getText(); String price = ((TextView) v.findViewById(R.id.list_row_price)).getText(); i = new Intent(this, ViewHouse.class); i.putExtra(strHouseName, title ); i.putExtra(strHousePrice, price ); startActivity(i); } 

Seguro para un ejemplo

// DatasetClass

 public class HouseData{ //private String HouseName= ""; private String HousePrice = ""; /*public String getHouseName() { return HouseName; } public void setHouseName(String HouseName) { this.HouseName= HouseName; }*/ public String getHousePrice () { return HousePrice ; } public void setHousePrice (String HousePrice ) { this.HousePrice = HousePrice ; } 

// clase del espectador es como: –

  public class ViewHolder { public TextView tv_HousePrice,tv_HouseName } 

// y aquí está el método getview aquí.

 public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; //holder=new ViewHolder(); View listrow = convertView; activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); if (listrow == null) { LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); listrow = vi.inflate(R.layout.your_listview_item_layout, null); holder=new ViewHolder(); holder.tv_HouseName=(TextView)listrow.findViewById(R.id.tv_name); holder.tv_HousePrice=(EditText)listrow.findViewById(R.id.tv_price); listrow.setTag(holder); } else holder=(ViewHolder)listrow.getTag(); listrow.setBackgroundColor(((position % 2)!=0) ? Color.rgb(229,229,229) : Color.WHITE); try { houseData= getItem(position); if (houseData!= null) { holder.tv_HouseName.setText(""+houseData.getHouseName()); holder.tv_HousePrice.setText(""+houseData.getHousePrice()); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } listrow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //here you can pass complete data object to next activity } }); return listrow; } 

Trate de obtener vista. Analizarlo con su texto por id. Obtener el texto y continuar

Prueba esto..

 public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { // Type cast to what the layout you used in the xml ie, for the list item // For example i took the RelativeLayout if(v instanceOf RelativeLayout){ RelativeLayout layout = (RelativeLayout) v; TextView title = (TextView) layout.findViewById(R.id.conFormat_Name); System.out.println(title.getText()); } } 

Puede crear un miembro que contenga el índice seleccionado en su adaptador personalizado como …

 private int selectedIndex; 

A continuación, inicializar a selectedIndex = -1 en el constructor de adaptador personalizado y su getter y setters …

 public void setSelectedIndex(int index) { this.selectedIndex = index; } public int getSelectedIndex() { return selectedIndex; } 

Y por último, sólo tiene que pasar el parámetro de position de su adaptador onItemClick en el setter y obtener el elemento seleccionado en cualquier lugar que desee utilizando getter.

Y una vez que mantenga el selectedIndex, puede obtener fácilmente el elemento seleccionado como ..

 public BookInfo getSelectedItem() { if (selectedIndex <= -1 || selectedIndex >= items.size()) { return null; } else { return items.get(selectedIndex); } } 

espero que esto ayude…:)

  • Carga perezosa de SQLite
  • ¿Cómo puedo eliminar líneas entre ListViews en Android?
  • Actualizar ListView después de eliminar de la base de datos
  • Actualizaciones de datos de Android ListView ArrayAdapter Mejores prácticas
  • Android lista personalizada con espacio entre los elementos
  • ListView no dispara setOnLongClickListener, sólo setOnItemClickListener
  • EditText con la lista de sugerencias a continuación
  • Cómo construir un diseño complejo en android con múltiples vistas de lista
  • Ajustar la posición personalizada checkMark dentro de CheckedTextView
  • OnItemClickListener en un ListView dentro de un fragmento no funciona
  • Pie de página debajo de la vista de lista fija en la parte inferior de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.