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

时间:2013-12-12 11:06:55

标签: android android-listview android-button listitem buttonclick

这是我的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();

        }  
 });

这是我的按钮点击事件:

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

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

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

4 个答案:

答案 0 :(得分:72)

你执行这个

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

答案 1 :(得分:30)

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

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

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

答案 2 :(得分:0)

声明一个全局变量,并在listview的onItemClick()方法中将视图位置设置为变量的值。 现在在按钮的点击方法中使用相同的变量。

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

答案 3 :(得分:0)

//使用“top”获取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项目顶部位置在CustomAdapter的getView方法下

    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;

        }
    });