Установить событие щелчка элемента на setOnItemClickListener списка просмотра Android - PullRequest
8 голосов
/ 12 мая 2011

У меня есть три текстовых просмотра в строке просмотра списка с использованием настраиваемого адаптера, и по щелчку строки я хочу выполнить событие щелчка выбранного текстового представления.

Ниже приведен мой пример кода для события click. Здесь при первом щелчке слушатели устанавливаются, и только при втором щелчке происходит фактическое событие щелчка, я хочу найти его по первому щелчку. Возможно ли это?

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);
                        }
                    });
            }
        });

Ответы [ 2 ]

6 голосов
/ 12 мая 2011

Почему бы просто не установить эти clickListeners во время инициализации? Вы должны сделать это в своем адаптере, когда привязываете свои данные к представлениям. Ваш код неверен, потому что он будет инициализировать ваши представления каждый раз, когда пользователь щелкает строку списка.

0 голосов
/ 12 мая 2011

Сделайте это в вашем адаптере, в методе getview. Установите список щелчка для каждого просмотра текста.

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


    }       
};

Выше для галереи. Сделайте то же самое, но сделайте это для textview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...