单击按钮获取列表视图项目位置

cod*_*der 36 android listitem buttonclick android-listview android-button

这是我的listview点击事件:

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

        }  
 });
Run Code Online (Sandbox Code Playgroud)

这是我的按钮点击事件:

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

现在我需要获得点击的listview项目的位置..我已经全局声明了postion但总是给我位置1.

谁能说我怎么得到这个位置?

Pas*_*llo 72

你执行这个吗?

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

在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();
    });
Run Code Online (Sandbox Code Playgroud)


Kar*_*oly 32

我知道我的答案有点迟了,但是这个怎么样:

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);
  }
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您不需要设置标签等.

  • 你救了我的命.祝你家人好运7年 (4认同)

Laz*_*nja 7

如果您使用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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果在setOnClickListener()行之前设置了标签(),则在滚动列表视图时会出现问题.