Domanda

Ho tre TextViews in una riga di una Vervatta Elenco utilizzando l'adattatore personalizzato e su Click of the Row, desidero eseguire l'evento di clic della vista di testo selezionata.

Di seguito è riportato il mio codice di esempio per l'evento Click. Qui al primo clic, gli ascoltatori sono impostati e solo al secondo clic dell'evento effettivo, voglio trovarlo al primo clic stesso. È possibile?

listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view,      int pos, long id) {

                    final Order orderBooking = (Order)adapter.getItemAtPosition(pos);

                    // SKU listener
                    final TextView tvSkuId = (TextView) view.findViewById(orderBooking.getSelectedSkuId());
                    tvSkuId.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            onSkuClickListener(view, orderBooking);
                        }
                    });

                    // SO listener
                    final TextView tvSoId = (TextView) view.findViewById(orderBooking.getSelectedSoId());
                    tvSoId.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            onSoClickListener(view, orderBooking);
                        }
                    });

                    // OR listener
                    final TextView txtOrId = (TextView) view.findViewById(orderBooking.getSelectedOrId());
                    //onOrClickListener(view, orderBooking);
                    txtOrId.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            onOrClickListener(view, orderBooking);
                        }
                    });
            }
        });
È stato utile?

Soluzione

Perché non semplicemente impostare quei clicklisteners in tempo dell'inizializzazione? Dovresti farlo nel tuo adattatore, quando leghi i tuoi dati alle viste. Il tuo codice è sbagliato, perché inizializzerà le viste ogni volta che l'utente fa clic sulla riga di un elenco.

Altri suggerimenti

Fallo nel tuo adattatore, nel metodo getview. Imposta un elenco OnClick per ogni vista di testo.

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {

    List<SectionObj> article = (List<SectionObj>) children.get(groupPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.listchildlayout_galleryview, null);
    }       
     Gallery gallery = (Gallery) convertView.findViewById(R.id.customviewgallery);
     gallery.setAdapter(new AddImgAdp(context, article, groupPosition ));
     gallery.setOnItemClickListener(mOnGalleryClick);

    return convertView;
}

private OnItemClickListener mOnGalleryClick = new OnItemClickListener(){

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {


    }       
};

Quanto sopra è per una vista in galleria. Fai la stessa cosa tranne farlo per un TextView

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top