当前位置: 首页 > 知识库问答 >
问题:

单击按钮时获取listview项的位置

长孙淳
2023-03-14

这是我的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项的位置。我已经声明了全局位置,但这总是给我位置1。

有人能告诉我怎么得到这个职位吗?

共有3个答案

宰父疏珂
2023-03-14

如果使用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;
        }
    }

如果您在setOnClickListener()行之前设置Tag(),则在滚动列表视图时会出现问题。

颜修明
2023-03-14

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

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

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

诸葛绍元
2023-03-14

你执行这个

    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();
    });
 类似资料:
  • 我为listview的每个项目都有按钮。单击按钮时,它必须获取相应listview项的值。 下面是我的getView方法。 我调用按钮如下在我的代码... 但我得到空指针异常,而这样做。我怎样才能解决这个问题? 下面是我的日志 com.vaighai.fragments.MyOrdersFragment$2$1.onClick(MyOrdersFragment.java:253)上的java.la

  • 如何处理ListView中的每个按钮单击?活动课 如何管理ListView中每个项目的按钮单击?我尝试了许多方法…如何解决此问题?请任何人帮帮我...

  • 我有一个FragmentActivity,它可以包含用户想要的任意多个ListFragments。ListFragments在HorizontalScrollView中并排排列(在ActionBar中选择一个选项时)。每个ListFragment项都包含一个TextView和一个按钮。单击按钮可更改按钮的ViewParent(包含按钮和TextView的线性布局)的背景色。 现在,单击每个List

  • 我想知道如何选择listview first item select并通过单击按钮自动单击。 使用下面的代码,我可以选择第一行,但无法选择。 这是我的listview点击事件: 非常感谢您的帮助!如果有人想了解更多信息,请务必告诉我,以便我更新我的问题。

  • 问题内容: 如何找到被点击的按钮的ID? 问题答案: 您需要发送ID作为功能参数。像这样做: 这将发送ID 作为您可以在您的函数中使用。

  • 问题内容: 我需要提取表中每列的详细信息。例如,列“名称/编号”。 该表包含多个地址 每行的最后一列都有一个按钮,使用户可以选择列出的地址。 问题: 我的代码仅选择具有类的第一个。我该如何工作? 这是jQuery位: 表: 问题答案: 练习的目的是找到包含信息的行。当我们到达那里时,我们可以轻松提取所需的信息。 回答 现在,让我们集中讨论这种情况下的一些常见问题。 如何找到最接近的行? 使用: 使