【问题标题】:Get value of item on OnItemClick Listview获取 OnItemClick Listview 上的项目值
【发布时间】:2012-11-15 20:29:34
【问题描述】:

我尝试在列表视图的自定义适配器中获取所选项目的值。我用下面的代码试试这个:

public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {

                    View curr = parent.getChildAt((int) id);
                    TextView c = (TextView)curr.findViewById(R.id.tvPopUpItem);
                    String playerChanged = c.getText().toString();

                    Toast.makeText(Settings.this,playerChanged, Toast.LENGTH_SHORT).show();

                }

一开始,如果我单击,值很好,但是一旦我滚动并单击另一个项目,我会得到该单击项目的错误值...知道是什么原因造成的吗?

【问题讨论】:

    标签: android listview onitemclick


    【解决方案1】:

    参数v 是当前行。所以使用:

    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        TextView c = (TextView) v.findViewById(R.id.tvPopUpItem);
        String playerChanged = c.getText().toString();
    
        Toast.makeText(Settings.this,playerChanged, Toast.LENGTH_SHORT).show();
    }
    

    (或者你可以使用getChildAt(position),但这会更慢。)

    了解您可以根据您的布局进一步简化此操作。

    【讨论】:

    • 谢谢,这行得通!您知道为什么 getChildAt 位置不起作用吗?我也试过这个,但这也给了我错误..
    • 取决于您的适配器id 可能指的是完全不同的索引。例如 CursorAdapters 在id 中返回表的主键。另一方面,position 应始终引用行数。
    【解决方案2】:

    只需少量更改

    TextView c = (TextView) v.findViewById(R.id.tvPopUpItem);
    

    由于您使用的是自定义视图,因此您需要在 OnItemClickListener 中传递 View 参数,然后您需要使用该值来获取其中存在的 TextViews 的详细信息

    【讨论】:

    • 下次发表评论,不要发布额外的答案。
    【解决方案3】:
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Intent i=new Intent(ListOfAstrologers.this,AstroProForUser.class);
                    i.putExtra("hello",adapter.getItem(position).getUsername() );
                    startActivity(i);
                }
            });
    

    这里的用户名是在类中声明的字符串字段,您必须在适配器类中覆盖getItem() 方法才能在单击时获取膨胀行的详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      相关资源
      最近更新 更多