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

列表视图是单选列表视图。当我单击列表中的任何项目时,它始终显示列表的第一项。这可能是什么原因造成的?如何获取所选项目的文本?

4

4 回答 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();               
    }});
于 2013-06-09T15:03:24.637 回答
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 充满了 String

于 2013-06-09T15:13:59.053 回答
3

你得到的arg0AdapterView. 相反,您应该得到arg1指的是单击的视图。

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

parent 单击发生的 AdapterView。
view 在 AdapterView 中被点击的视图(这将是适配器提供的视图)
position 视图在适配器中的位置。
id 单击的项目的行 id。

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

请参阅AdapterView.OnItemClickListener

于 2013-06-09T15:00:20.263 回答
0

因为我觉得列表视图有项目,所以可以直接在 onClick() 方法中使用下面的行从列表视图中获取选定的文本:

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

这将从列表视图中给出选定的文本,并且可以在任何地方使用。

于 2020-04-23T07:42:34.717 回答