OnItemClick 如何从列表视图中获取单击项目的文本值

Posted

技术标签:

【中文标题】OnItemClick 如何从列表视图中获取单击项目的文本值【英文标题】:OnItemClick how to get text value of clicked item from list view 【发布时间】:2018-05-04 14:57:00 【问题描述】:

当单击列表项时,我想获取列表项的文本值并将其传递给另一个片段中的编辑文本。

这是我获取值并将其传递给另一个片段的代码。

    lv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 
            String clickedItem = adapterView.getItemAtPosition(i).toString().trim();
            SM.sendData(clickedItem);
        
    );

发送数据方法

@Override
public void sendData(String message) 
    String tag = "android:switcher:" + R.id.container + ":" + 1;
    SearchFragment searchFragment = (SearchFragment) getSupportFragmentManager().findFragmentByTag(tag);
    searchFragment.displayReceivedData(message);

我能够接收数据,但不是如显示的那样。我没有收到“圣诞节”列表项,而是收到类似“com.example.johndoe.project.Category@fa9dc73”的内容

我如何在点击时更改片段?

非常感谢您的帮助!

【问题讨论】:

与问题分享你在listview中传递的模型类 ***.com/questions/47363151/… 【参考方案1】:

我能够接收数据,但不是如显示的那样。我没有收到“圣诞节”列表项,而是收到类似“com.example.johndoe.project.Category@fa9dc73”的内容

因为 adapterView.getItemAtPosition(i) 可能会返回您的自定义模型类而不是 String

试试这个

lv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() 
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 
                YourModelClass data = adapterView.getItemAtPosition(i);

                SM.sendData(data.getMessage);
            
        );

【讨论】:

【参考方案2】:

--> adapterView.getItemAtPosition(i) 不是字符串!

所以替换,--------

String clickedItem = adapterView.getItemAtPosition(i).toString().trim();

与,

String clickedItem = ((Category)adapterView.getItemAtPosition(i)).getMyTextproperty();

如果你能分享你的模型类就好了。

【讨论】:

【参考方案3】:

您将class 转换为string 显然会打印带有偏移量的classname,请在下面尝试

lv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) 
            String clickedItem = ((Category)adapterView.getItemAtPosition(i)).getMyTextproperty();
            SM.sendData(clickedItem);
        
    );

【讨论】:

以上是关于OnItemClick 如何从列表视图中获取单击项目的文本值的主要内容,如果未能解决你的问题,请参考以下文章

单击列表项时应用程序崩溃:FATAL EXCEPTION: main, .onItemClick

单击列表视图项时从 SQLite 数据库中获取行 ID

如何从列表视图中获取值

如何获取 AlertDialog 中自定义列表视图的单击项的值?

单击列表视图项时检索的值

如何从另一个类中调用 onItemClick 方法?