Нажмите ImageView в ListView ListItem и получить позицию? - PullRequest
6 голосов
/ 20 декабря 2011

В настоящее время при нажатии ListItem я беру его позицию и передаю его в StopsScheduleActiviy. Я хотел бы определить, когда щелкается ImageView этого ListItem, чтобы я мог вместо этого запустить свой MapActivity и передать ему позицию.

В основном: щелкните по запуску ImageView MapsActivity, в противном случае щелкните в любом другом месте при запуске ListItem StopsScheduleActivity. В обоих случаях мне нужна должность. Как я могу это сделать?

Вот мой текущий слушатель onItemClick.

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

    Intent myIntent = new Intent(this, StopsScheduleActivity.class);
    myIntent.putExtra("stop", stops.get(position));

    startActivity(myIntent);

    Log.i("Winnipeg Bus", "Stop item #" + id + " clicked.");
}

Вот мой ListView с картой для ImageView, которую я хочу слушать для кликов. Спасибо!

enter image description here

Ответы [ 4 ]

26 голосов
/ 20 декабря 2011

В вашем пользовательском адаптере getView() метод, когда вы инициализируете ImageView. Добавить позицию в качестве тега для просмотра изображений. Поэтому каждый раз, когда появляется новый ImageView, он будет удерживать свою позицию в своем теге. Затем просто добавьте OnClickListener() в getView().

OnClickListener(View view) содержит представление, на которое нажал пользователь. Поэтому, когда пользователь щелкнет любое изображение в списке. Затем он будет передан в OnClickListener(View view) в виде щелчка. И мы знаем, что наш ImageView содержит позицию в качестве тега. Таким образом, тег может сказать нам, что это ImageView для? позиция. :)

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

        if(convertView == null){
            convertView = inflater.inflate(R.layout.list_row, parent, false);
        }

        ImageView imageView = (ImageView) convertView.findViewById(R.id.videoListImage);
        imageView.setTag(new Integer(position));
        imageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                Toast.makeText(mContext, "ImageView clicked for the row = "+view.getTag().toString(), Toast.LENGTH_SHORT).show();
            }
        });

        return convertView;
    }

Вы получите нажатую ImageView позицию.

12 голосов
/ 20 декабря 2011

Для Клика ImageView. Вы должны сделать специальный адаптер для своего списка .

А в методе getView() adpater просто напишите imageView's onClick(), и начните свою новую деятельность с этогоonClick ().

для imageview. Просто посмотрите этот учебник Android Series: пользовательские элементы ListView и адаптеры ..

4 голосов
/ 20 декабря 2011
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            System.out.println("getView " + position + " " + convertView);
            ViewHolder holder = null;

            if (convertView == null) {

                convertView = LayoutInflater.from(conText).inflate(
                        R.layout.gridgoggle, parent, false);
                holder = new ViewHolder();

                convertView.setTag(holder);

            } else {
                holder = (ViewHolder) convertView.getTag();
            }


            holder.imageView1.setImageResource(Integer.parseInt((mData
                    .get(position).get("image"))));

            holder.imageView1.setId(position);

            holder.imageView1.setOnClickListener(new OnClickListener() {
                public void onClick(View v)
 {

                                   int id = v.getId();
//here id is position.

  Intent myIntent = new Intent(this, StopsScheduleActivity.class);
  myIntent.putExtra("stop", id);

 startActivity(myIntent);


                }
            });
            return convertView;
        }
0 голосов
/ 22 сентября 2016

В три простых шага:

1 В вашем адаптере метод getView (int position, View convertView, ViewGroup parent):

ImageView imageview =(ImageView) convertView.findViewById(R.id.imageView);
imageview.setTag(new Integer(position));

2 В layout.xml добавить метод onClick() на ImageView

3 implements onClick() и извлекает индекс по view.getTag()

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