Get value of item on OnItemClick Listview

2019-04-04 19:15发布

I try to get the value of a selected Item within a custom adapter on a listview. I try this with following code:

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

                }

At the beginning, if I click, the values are good, but once I scrolled and I click on another Item, I get the wrong value of that clicked item... Any idea what is causing this?

3条回答
孤傲高冷的网名
2楼-- · 2019-04-04 19:28
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);
            }
        });

Here username is a string field declared in a class and you must over ride getItem() method in adapter class to get the details of inflated row when you click.

查看更多
看我几分像从前
3楼-- · 2019-04-04 19:41

The parameter v is the current row. so use:

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

(Or you could use getChildAt(position) but this would be slower.)

Understand you might be able to simplify this more depending on your layout.

查看更多
对你真心纯属浪费
4楼-- · 2019-04-04 19:42

Just Small Change is Required

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

Since you are using custom view you need to pass the View argument in your OnItemClickListener then you need to use that value to get the Details of TextViews present in that

查看更多
登录 后发表回答