Как фиксировать события кликов в разных представлениях в элементе списка? - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть представление списка с изображением и текстом в линейном макете.Я хочу выполнять различные операции, когда пользователь нажимает на изображение и текстовое представление.Я пробовал onItemClickListener, но он захватывает весь линейный макет.Я попробовал onClickListener в пользовательском адаптере, но не смог получить его позицию.

Как мне решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 30 ноября 2011

Во-первых, сделайте ваш текстовый просмотр и просмотр изображений кликабельным и фокусируемым.

Secondly Inside Ваш класс адаптера в getView добавляет события как к textview, так и к imageview.

0 голосов
/ 30 ноября 2011

Здесь я делюсь своим кодом. У меня есть три Textviews в каждом элементе списка, и на одном из них я помещаю слушателя. Этот код для справки. Из приведенного ниже кода U может помещать слушателей в разные элементы списка. Теперь я надеюсь, Вы можете написать код, как вы хотите.

static class ViewHolder {
    public TextView tv1,tv2,tv3;

        }

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    View rowView = null;
    final ViewHolder holder = new ViewHolder();
    if (convertView == null) {

        LayoutInflater inflator = context.getLayoutInflater();
        rowView = inflator.inflate(R.layout.attach_pic, null);

        holder.tv1 = (TextView) rowView.findViewById(R.id.defectpic);
        holder.tv2 = (TextView) rowView.findViewById(R.id.no_of_uploded_pics);
        holder.tv3 = (TextView) rowView.findViewById(R.id.camera);

        holder.tv3.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub  

                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                cameraIntent.putExtra(TAG, position);
                context.startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

            }
        });

        rowView.setTag(holder);
        List itemVal1 = (List)getItem(position);
        String st1 = (String)itemVal1.get(0);
        holder.tv1.setText(st1);

        List itemVal2 = (List)getItem(position);
        String st2 = (String)itemVal2.get(1);
        holder.tv2.setText(st2);

    } else {
        rowView = convertView;
        ((ViewHolder) rowView.getTag()).tv1.setTag(list.get(position));
        ((ViewHolder) rowView.getTag()).tv2.setTag(list.get(position));
        ((ViewHolder) rowView.getTag()).tv3.setTag(list.get(position));
    }

    return rowView;
}
0 голосов
/ 30 ноября 2011

установить тег для каждого вида, который вы собираетесь щелкнуть в качестве своей позиции, и получить его с помощью gettag

...