Подтвердить что ты не робот

Получить позицию позиции списка при нажатии кнопки

Это мое событие clickview:

 lv1.setOnItemClickListener(new OnItemClickListener() {
       @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                Object o = lv1.getItemAtPosition(position);
                ItemDetails obj_itemDetails = (ItemDetails)o;
                Toast.makeText(ListViewImagesActivity.this, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show();

        }  
 });

И это мое событие нажатия кнопки:

btnNxt = (Button) findViewById(R.id.btnNext);
 btnNxt.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) {
  //Here I need to get that position
});

Теперь мне нужно получить позицию элемента clicked listview. Я объявлял позицию глобально, но всегда давал мне позицию 1.

Может ли кто-нибудь сказать мне, как мне получить позит?

4b9b3361

Ответ 1

выполняете ли вы это

    btnNxt = (Button) findViewById(R.id.btnNext);
 btnNxt.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) {
  //Here I need to get that position
});

внутри метода getView? если это так очень легко

     btnNxt = (Button) findViewById(R.id.btnNext);
     btnNxt.setTag(position);
     btnNxt.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View arg0) {
      int position=(Integer)arg0.getTag();
    });

Ответ 2

Я знаю, что я немного опоздал с ответом, но как насчет этого:

private OnClickListener myButtonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
    View parentRow = (View) v.getParent();
    ListView listView = (ListView) parentRow.getParent();
    final int position = listView.getPositionForView(parentRow);
  }
};

в этом случае вам не нужно устанавливать теги и т.д.

Ответ 3

Если вы используете ViewHolder, убедитесь, что вы используете setTag() следующим образом.

    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;


        if (convertView == null) {
            holder = new ViewHolder();
            convertView = mLayoutInflater.inflate(R.layout.custom_row, parent, false);
            holder.btnNxt = (Button) convertView.findViewById(R.id.btnNext);
            holder.btnNxt.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    int position=(Integer)arg0.getTag();
                });
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
          holder.btnNxt.setTag(position);   // <---- setTag() here 

            return convertView;
        }

        private class ViewHolder {
            Button btnNxt;
        }
    }

Если вы установилиTag() перед вашей строкой setOnClickListener(), у вас возникнет проблема при прокрутке списка.

Ответ 4

объявить глобальную переменную, а в методе onItemClick() для lisview установить позицию представления как значение переменной. теперь используйте одну и ту же переменную в методе нажатия кнопки.

int global_position =0; // your global variable 

 lv1.setOnItemClickListener(new OnItemClickListener() {
       @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
               global_position =position;
        }  
 });

btnNxt = (Button) findViewById(R.id.btnNext);
 btnNxt.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) {
    Toast.makeText(<context>,""+global_position,500).show();
});

Ответ 5

//используйте "верх" для получения верхней позиции списка элементов

//Верхняя позиция списка Listview

    int top;
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View lView, final int pos, long id) {
            top = lView.getTop();
            if (top < 1) top = 1;
        }
    });

//Или // Верхняя позиция списка Listview В методе getView для CustomAdapter

    int top;
    final View finalConvertView = convertView;
    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            top = finalConvertView.getTop();

            if (top < 1) top = 1;

        }
    });