Android: Obtiene el elemento listview del botón que se hace clic en la vista de lista personalizada

Tengo un ListView de encargo con dos botón y yo cuando hago clic en cualquier botón en cualquier fila que quiero conseguir la etiqueta del texto en el Listview y por ahora apenas popup un tostado con él. Hasta ahora nada ha funcionado. Sigo recibiendo el último elemento en mi array.

Aquí hay una captura de pantalla para darle una mejor idea de lo que quiero decir

Introduzca aquí la descripción de la imagen

Aquí está mi subclase de adaptador para mi ListView personalizado

static final String[] Names = new String[] { "John", "Mike", "Maria", "Miguel"}; class MyArrayAdapter extends ArrayAdapter<String> { private final Context context; int which; public MyArrayAdapter(Context context, String[] pValues) { super(context, R.layout.main, pValues); this.context = context; values = pValues; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); rowView = inflater.inflate(R.layout.main, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.label); ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); Button call = (Button) rowView.findViewById(R.id.button1); Button chat = (Button) rowView.findViewById(R.id.button2); textView.setText(values[position]); // Change icon based on name s = values[position]; which = position; call.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String name = values[which]; Toast.makeText(CustomListView.this, name, Toast.LENGTH_SHORT).show(); } }); return rowView; } } 

Editar:

 String name = textView.getText().toString(); RelativeLayout ll = (RelativeLayout)v.getParent(); textView = (TextView)ll.findViewById(R.id.label); Toast.makeText(CustomListView.this, name, Toast.LENGTH_SHORT).show(); 

Fácil de hacer:

  call.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { RelativeLayout rl = (RelativeLayout)v.getParent(); TextView tv = (TextView)rl.findViewById(R.id.label); String text = tv.getText().toString(); Toast.makeText(CustomListView.this, text, Toast.LENGTH_SHORT).show(); } }); 

Use el atributo setTag de la vista …………..

como

 Button call = (Button) rowView.findViewById(R.id.button1); call.setTag(position); 

y

 call.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int which = -1; Obejct obj = v.getTag(); if(obj instaceof Integer){ which = ((Integer)obj).intValue(); } if(which >-1){ String name = values[which]; Toast.makeText(CustomListView.this, name, Toast.LENGTH_SHORT).show(); } } }); 

Si tiene una ListActivity y no está utilizando su propio adaptador, puede obtener el elemento de lista que pertenece al botón pulsado, así:

En el archivo de diseño de la fila de la lista:

 <ImageButton android:id="@+id/button_call" android:layout_height="48dip" android:layout_width="48dip" android:contentDescription="Call" android:onClick="callBuddy" android:src="@drawable/call_button_image" /> 

En su ListActivity:

 public void callBuddy(View view) { int position = getListView().getPositionForView((View) view.getParent()); Buddy buddyToCall = (Buddy) getListView().getItemAtPosition(position); Toast.makeText(MyListActivity.this, String.format("Calling your buddy %s.", buddyToCall.name), Toast.LENGTH_SHORT).show(); } 

Simplemente use getItem () y pase la posición Ex: getItem(position).getID() aquí getID () método es getter método

Set onClick = "haga clic" en xml de botón / imagen / etc …

Y en su Actividad, haga:

 public void click(View v) { final int position = getListView().getPositionForView(v); String text = getListView().getItemAtPosition(position).toString(); Toast.makeText(getApplicationContext, text, Toast.LENGTH_SHORT).show(); } 
  • ¿Cómo podemos agregar maxlength en SearchView?
  • Android, programatically diseño de una vista de botón?
  • Problema de visibilidad de Android con la casilla de verificación
  • Cómo detectar un clic en cualquier parte de un SearchView
  • Efecto del carrusel de Android con diseños
  • ¿Cómo agregar TextView en medio de pulgar SeekBar?
  • Android SearchView cadena vacía
  • Vista personalizada con diseño
  • Sube un diseño con el teclado suave pero guarda uno en la parte inferior
  • Cómo inflar vista desde XML en Android?
  • Filtro en vivo de la cámara Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.