获取有关OnItemClick ListView项的值(Get value of item on O

2019-08-02 19:08发布

我尝试在列表视图自定义适配器内得到一个选择项的值。 我尝试这个具有下面的代码:

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

                }

在开始的时候,如果我点击,该值是好的,但一旦我滚动和我点击其他项目,我得到的点击项目...任何想法是什么原因造成这个错误的价值?

Answer 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) ,但是这将是慢。)

了解你也许可以简化这更取决于你的布局。



Answer 2:

只是微小的变化是必需的

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

由于您使用的自定义视图,你需要通过查看参数在OnItemClickListener那么你需要使用该值来获取存在于TextViews的详细信息



Answer 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()适配器类的方法,当你点击获取充气行的细节。



文章来源: Get value of item on OnItemClick Listview