【问题标题】:Android - Listview stays emptyAndroid - Listview 保持为空
【发布时间】:2016-01-13 22:26:56
【问题描述】:

我目前在片段中实现列表视图时遇到问题。 我使用了一个Hashmap,然后转换为一个arrayList,如下所示:

     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View myView = inflater.inflate(
            R.layout.fragment_portfolio, container, false);
    ListView listview = (ListView) myView.findViewById(R.id.listview);

    List<HashMap<String, Integer>> fillMaps = new ArrayList<>();
    HashMap<String, Integer> portfoliodata = new HashMap<>();
    portfoliodata.put("Test", 23);
    fillMaps.add(portfoliodata);
    SimpleAdapter adapter = new SimpleAdapter(getActivity().getApplicationContext(), fillMaps, R.layout.my_adapter_item, new String[] { "AAA","BBB" },
            new int[] { android.R.id.text1, android.R.id.text2 });
    listview.setAdapter(adapter);
    return myView;
}

然而,结果总是一个完全空白的片段。知道为什么要这样做以及如何解决这个问题吗?

提前谢谢你

【问题讨论】:

  • 发布R.layout.my_adapter_item.xml的内容
  • 你的listview行布局中有android.R.id.text1, android.R.id.text2

标签: java android listview hashmap


【解决方案1】:

getActivity() 在 onCreateView() 方法中不存在,因为您还没有 Activity 的上下文。

您可以探测将您的代码移动到 onResume() 方法。

*请记住,您必须将每一列与您的数据联系起来,类似这样:

ListView listview;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
    View myView = inflater.inflate(
        R.layout.fragment_portfolio, container, false);

    listview = (ListView) myView.findViewById(R.id.listview);

    return myView;
} 

@Override
public void onResume() {
    // create the grid item mapping
    String[] from = new String[] {"AAA","BBB"};
    int[] to = new int[] {android.R.id.text1, android.R.id.text2};

    List<HashMap<String, String>> fillMaps = new ArrayList<>();
    HashMap<String, String> portfoliodata = new HashMap<>();
    portfoliodata.put("AAA", "Text SampleA");
    portfoliodata.put("BBB", "Text SampleB");
    fillMaps.add(portfoliodata);

    SimpleAdapter adapter = new SimpleAdapter(getActivity(), fillMaps, 
        R.layout.my_adapter_item, from, to);
    listview.setAdapter(adapter);
}

祝你好运!

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2014-08-29
    相关资源
    最近更新 更多