Este es mi listview evento click:

 lv1.setOnItemClickListener(new OnItemClickListener() {
       @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                Object o = lv1.getItemAtPosition(position);
                ItemDetails obj_itemDetails = (ItemDetails)o;
                Toast.makeText(ListViewImagesActivity.this, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show();

        }  
 });

Y este es mi evento de clic de botón:

btnNxt = (Button) findViewById(R.id.btnNext);
 btnNxt.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) {
  //Here I need to get that position
});

Ahora necesito para obtener la posición del clic elemento listview..he declarado posición a nivel mundial, pero que siempre me da la posición 1.

¿Alguien puede decir me ¿cómo puedo obtener la posición ?

  • ¿Dónde han declarado la posición a nivel mundial?
  • el método onCreate
  • Han declarado posición=1 a nivel mundial como este?
  • He puesto como jst int y no se especifica ningún valor
  • comentar.Simplemente downvoting dosent tiene sentido
InformationsquelleAutor coder | 2013-12-12

5 Comentarios

  1. 72

    hacer ejecutar este

        btnNxt = (Button) findViewById(R.id.btnNext);
     btnNxt.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View arg0) {
      //Here I need to get that position
    });

    dentro del método getView?
    si es así es muy fácil

         btnNxt = (Button) findViewById(R.id.btnNext);
         btnNxt.setTag(position);
         btnNxt.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View arg0) {
          int position=(Integer)arg0.getTag();
        });
    • Hola señor, por Favor, dime cómo puedo obtener la posición de un elemento en particular sin necesidad de hacer clic en ese elemento sólo la base del nombre del elemento .
    • usted debe abrir una pregunta sobre sus el propios, o utilizar la función de búsqueda. De todos modos, el método public View getView(int position, View convertView, ViewGroup parent) de Adaptador de clase ya contenido de un parámetro que indica la posición del elemento.
    • El uso de la etiqueta es una mala idea. Por ejemplo, usted no puede llamar a setTag en un ImageView si va a cargar con Glide.
  2. 31

    Sé que soy un poco tarde con la respuesta, pero lo que acerca de esto:

    private OnClickListener myButtonClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        View parentRow = (View) v.getParent();
        ListView listView = (ListView) parentRow.getParent();
        final int position = listView.getPositionForView(parentRow);
      }
    };

    en este caso no es necesario configurar las etiquetas y así sucesivamente.

    • hii, quiero saber la posición de un elemento en particular en la vista de lista sin necesidad de hacer clic en ese elemento en la base del elemento.
    • OMG, eres un protector de la vida. Mañana tengo una fecha límite para que mi aplicación en el trabajo, y apenas hoy me di cuenta que yo no estaba en la posición correcta y pasamos todo el día. Gracias)
    • Usted es bienvenido, mi amigo ! 🙂
    • usted salvó mi vida. 7 años de buena suerte en tu familia
    • Gracias @PromotionArtwork 🙂 , y lo que sobre mí ? 😀
    • :O.. Genial funciona perfecto
    • Esto me ayudó mucho. Yo estaba utilizando las Etiquetas de algo más y no fue capaz de encontrar una buena solución.
    • Después de 3 horas de haber ayudado 😀 Gracias
    • Esto también está en Swift (iOS) la mejor manera de conseguir un clic del botón en un control ListView
    • La respuesta aceptable

  3. 7

    Si usted está usando ViewHolder asegúrese de usar setTag() como este.

        public View getView(int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
    
    
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = mLayoutInflater.inflate(R.layout.custom_row, parent, false);
                holder.btnNxt = (Button) convertView.findViewById(R.id.btnNext);
                holder.btnNxt.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View arg0) {
                        int position=(Integer)arg0.getTag();
                    });
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
              holder.btnNxt.setTag(position);   //<---- setTag() here 
    
                return convertView;
            }
    
            private class ViewHolder {
                Button btnNxt;
            }
        }

    Si setTag() antes de su setOnClickListener() de la línea, usted tendrá problema cuando usted se desplaza de su listview.

    • La única Solución que funcionó!!!! Muchas gracias. Usted salvó mi vida
  4. 0

    declarar una variable global y en onItemClick() método de lisview establecer la posición de la vista como el valor de la variable.
    ahora usar la misma variable en el método click de botón.

    int global_position =0; //your global variable 
    
     lv1.setOnItemClickListener(new OnItemClickListener() {
           @Override
                public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                   global_position =position;
            }  
     });
    
    btnNxt = (Button) findViewById(R.id.btnNext);
     btnNxt.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View arg0) {
        Toast.makeText(<context>,""+global_position,500).show();
    });
    • se tostará sólo el último clic posición del elemento !!
    • ¿lo ha intentado? funciona? quiero utilizar este enfoque, porque no quiero poner la posición en la vista de etiqueta
    • Cualquier organismo puede decir cómo puedo encontrar la posición de un elemento en particular sin necesidad de hacer clic en ese elemento, sobre la base del nombre del elemento .
  5. 0

    //uso de «arriba» para obtener elementos de listview posición superior

    //Elementos de Listview posición superior

        int top;
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View lView, final int pos, long id) {
                top = lView.getTop();
                if (top < 1) top = 1;
            }
        });

    //O
    //Elementos de Listview posición superior Bajo CustomAdapter del método getView

        int top;
        final View finalConvertView = convertView;
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                top = finalConvertView.getTop();
    
                if (top < 1) top = 1;
    
            }
        });

Dejar respuesta

Please enter your comment!
Please enter your name here