获取OnItemClick Listview上的项目值

时间:2012-11-15 20:29:34

标签: android listview onitemclick

我尝试在listview上的自定义适配器中获取所选项的值。我尝试使用以下代码:

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

                }

一开始,如果我点击,值很好,但是一旦我滚动并点击另一个项目,我得到了该点击项目的错误值...任何想法导致了什么?

3 个答案:

答案 0 :(得分:47)

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

了解您可以根据布局进行更多简化。

答案 1 :(得分:0)

只需要小改变

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

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

答案 2 :(得分:0)

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

此处,username是在类中声明的字符串字段,您必须在适配器类中过度getItem()方法才能在单击时获取膨胀行的详细信息。