Onitemclick слушатель по методу getview - PullRequest
1 голос
/ 23 сентября 2011

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

Во время создания списка он показывает позиции в logcat.Но когда я пытаюсь нажать на текстовое представление деталей, оно занимает последнюю позицию элемента.

public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View v = convertView;

            if(v == null){
                LayoutInflater vl = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vl.inflate(R.layout.listItem, null);
            }
            Fields o = results.get(position);

            if (o != null) {
                TextView iv = (TextView)v.findViewById(R.id.toptext);
                TextView tv_link = (TextView)v.findViewById(R.id.toptext1);             
                ImageView tv_Image = (ImageView)v.findViewById(R.id.Locimage);

                tv_link.setText("Details >>");
                tv_link.setOnClickListener( new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Dialog dialog = new Dialog(mContext);

                        dialog.setContentView(R.layout.locationdetails);
                        dialog.setTitle("Title");

                        System.out.println("Position   "+pos);

                        TextView LocName = (TextView) dialog.findViewById(R.id.LocDescName);
                        LocName.setText(o.getLocationName());

ImageView LocDescImage = (ImageView) dialog.findViewById(R.id.LocDescImage);
                        Bitmap bitmap;
                        try {
                            bitmap = BitmapFactory.decodeStream((InputStream) new URL(o.getLocationImage()).getContent());
                            LocDescImage .setImageBitmap(bitmap);
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                        dialog.show();
                        }
                });

                }
            DbLoc.close();      
            return v;
        }       
    }

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Попробуйте использовать методы setTag (Object o) и getTag () в TextView, это может помочь вам, я имею в виду

tv_link.setTag(o);

внутри onClickListener, получить этот объект используя v.getTag ();

Fields o=(Fields)v.getTag();
LocName.setText(o.getLocationName());

это может решить вашу проблему.

0 голосов
/ 23 сентября 2011

Это потому, что int: pos внутри tv_link.setOnClickListener не управляется должным образом.почему вы не добавили здесь связанный с ним код.

в любом случае, если передачи одного объекта по tv_link.setTag (your_pbject) будет достаточно согласно вашему требованию, пройдите его, иначе создайте внутренний класс, который будет реализовывать View.onClickListener и передавать связанные данные через конструктор во время установки этого onclickListenet для каждого представления.

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