两行ListView不显示内容

Posted

技术标签:

【中文标题】两行ListView不显示内容【英文标题】:Two-line ListView does not show content 【发布时间】:2019-06-27 15:19:42 【问题描述】:

我的两行 ListView 目前有问题。两行 ListView 显示列表分隔符,但是其中没有数据或文本。我可能在哪里做错了?

如需了解更多信息,例如results.get(i) 将显示Tungro,18.92%

ArrayList<HashMap<String, String>> listItems = new ArrayList<>();
    HashMap<String, String> listItemData;

    for (int i=0; i<results.size(); i++) 

        if (results.size() != 0) 
            listItemData = new HashMap<String, String>();
            String resultStr = results.get(i).toString();
            String[] resultStrVar = resultStr.split(",");

            listItemData.put(resultStrVar[0], resultStrVar[1]);
            listItems.add(listItemData);

         else 
            listItemData = new HashMap<String, String>();
            listItemData.put("No predictions found", "Kindly shot again");
            listItems.add(listItemData);
        
    

    SimpleAdapter adapter = new SimpleAdapter(Results.this, listItems,
            android.R.layout.simple_list_item_2,
            new String[] "First Line", "Second Line",
            new int[] android.R.id.text1, android.R.id.text2 );

    listView.setAdapter(adapter);

下面是 ListView 的截图,你可以看到列表分隔符,但没有文本或数据:

我如何标记字符串或适配器有问题吗?非常感谢。

【问题讨论】:

您在SimpleAdapter 构造函数调用中作为第四个参数传递的String[] 数组是您提供给SimpleAdapter 的项目Map 的键。也就是说,对于您给 SimpleAdapter 的每个 Map 项目,每个 Map 中必须有与该数组中的键相对应的值。您已经传递了"First Line""Second Line",它们与您在将值放入每个项目的Map 时使用的任何键都不对应;目前,resultStrVar[0]if 块中,"No predictions found"else 块中。 【参考方案1】:

感谢迈克 M!我已将代码更改为以下内容:

ArrayList<HashMap<String, String>> listItems = new ArrayList<>();
HashMap<String, String> listItemData;

for (int i=0; i<results.size(); i++) 

    if (results.size() != 0) 
        listItemData = new HashMap<String, String>();
        String resultStr = results.get(i).toString();
        String[] resultStrVar = resultStr.split(",");

        listItemData.put("disease_name", resultStrVar[0]);
        listItemData.put("confidence", resultStrVar[1]);
        listItems.add(listItemData);

     else 
        listItemData = new HashMap<String, String>();
        listItemData.put("disease_name", "No predictions found");
        listItemData.put("confidence", "Kindly shot again");
        listItems.add(listItemData);
    


SimpleAdapter adapter = new SimpleAdapter(Results.this, listItems,
        android.R.layout.simple_list_item_2,
        new String[] "disease_name", "confidence",
        new int[] android.R.id.text1, android.R.id.text2 );

listView.setAdapter(adapter);

【讨论】:

以上是关于两行ListView不显示内容的主要内容,如果未能解决你的问题,请参考以下文章

Qt ListView 不显示 C++ 模型内容

listview文本换行,怎么办

android中ScrollView嵌套ListView或GridView显示位置问题

android listView嵌套gridview的使用心得

如何强制 ListView 忽略单击/不突出显示单击的项目?

android listView嵌套gridview的使用心得