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

时间:2017-11-21 08:09:54

标签: android android-fragments android-fragmentactivity android-listfragment

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

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

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

我能够接收数据,但不能显示例如。而不是收到列表项&#34;圣诞节&#34;,我得到类似&#34; com.example.johndoe.project.Category@fa9dc73"

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

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

  

我能够接收数据,但不能显示例如。而不是收到列表项&#34;圣诞节&#34;,我得到类似&#34; 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);
            }
        });

答案 1 :(得分:1)

- &GT; adapterView.getItemAtPosition(i)不是字符串!

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

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

用,

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

如果你可以分享你的模特课,那就很好。

答案 2 :(得分:0)

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