获取项目单击列表视图上的项目值



我尝试在列表视图上的自定义适配器中获取所选项的值。我使用以下代码尝试此操作:

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();
                }
一开始,如果我点击,

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

参数 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)但这会更慢。

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

只需要做很小的更改

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

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

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()方法才能在单击时获取膨胀行的详细信息。

我没有太多经验,但我认为如果您想将变量从 OnClick(这是一个匿名类)传递到 onClick 的外部和其他活动,您想通过 Intent intent.putExtra...(这很容易)否则,您最终可能会使用"公共静态"变量,这可能是内存泄漏...

相关内容

  • 没有找到相关文章

最新更新