Question

J'ai trois TextViews dans une ligne de ListView en utilisant l'adaptateur personnalisé et en cliquant sur la ligne, je souhaite effectuer l'événement de clic de la vue texte sélectionnée.

Vous trouverez ci-dessous mon exemple de code pour l'événement de clic. Ici, sur le premier clic, les auditeurs sont définis et uniquement sur le deuxième clic sur l'événement de clic réel, je veux trouver ceci sur le premier clic lui-même. Est-il possible?

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);
                        }
                    });
            }
        });
Était-ce utile?

La solution

Pourquoi ne pas simplement définir ces clickisteners en temps d'initialisation? Vous devez le faire dans votre adaptateur lorsque vous liez vos données aux vues. Votre code est faux, car il initialisera vos vues chaque fois que l'utilisateur clique sur la ligne d'une liste.

Autres conseils

Faites-le dans votre Adapater, dans la méthode GetView. Définissez un onclick Listner pour chaque vue de texte.

@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) {


    }       
};

Ce qui précède est pour une vue de galerie. Faites la même chose sauf faire pour un textview

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top