ListView onItemClick仅获得第一个项目。

问题描述 投票:4回答:4

我试图获取所选项目的文本,并将其显示在吐司信息中。这是我写的代码。

final ListView lv = (ListView)findViewById(R.id.firstflightlist);
        lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            TextView c = (TextView) arg0.findViewById(arg1.getId());

            String text = c.getText().toString();
            Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();               
        }});

列表视图是一个单项选择的列表视图。当我点击列表中的任何一项时,它总是显示列表中的第一项。可能是什么原因造成的?我怎样才能获得所选项目的文本?

android android-listview
4个回答
6
投票

你不需要findViewById,你已经有了你点击的视图了.而且findViewById只找符合id的第一个项目,在列表视图中,你有很多项目有相同的id,所以它找第一个项目

 lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {


        TextView c = (TextView) arg1; //<--this one 
        String text = c.getText().toString();
        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();               
    }});

3
投票

你得到的是 arg0 也就是 AdapterView. 你应该得到 arg1 而不是指被点击的视图。

String text = ((TextView) arg1).getText();

点击发生的AdapterView。 视图 点击的AdapterView中的视图(这将是一个由适配器提供的视图)。 位置 视图在适配器中的位置。 id 被点击的项目的行名。

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

参见 AdapterView.OnItemClickListener


3
投票
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {

        String text = (String) parent.getItemAtPosition(position);
        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();               
    }});

假设你的ListView中充满了字符串


0
投票

由于我觉得列表视图有项目,那么可以直接在onClick()方法中使用下面的一行来从列表视图中获取选中的文本。

String text = (String) adapterView.getItemAtPosition(position);

这样就可以从列表视图中得到选中的文本,并且可以到处使用。

© www.soinside.com 2019 - 2024. All rights reserved.