【问题标题】:Troubles with listview in fragment片段中列表视图的问题
【发布时间】:2017-12-06 20:00:35
【问题描述】:

我正在尝试在片段中创建包含图像和文本的列表视图,但我无法让它工作。我收到某种错误,告诉我我试图在 null 上调用 set Adapter 方法对象。我做错了什么

public class SecondFragment extends Fragment {
String[] listviewTitle = new String[]{"Drew Parker","Maggie Smith","Michael John","Luisa Miller","Loredana Marie","Cristopher Smidth","Michelle Acapella","John Fitzgerald"

};
int[] listviewImage = new int[]{
        R.drawable.profile, R.drawable.profile, R.drawable.profile, R.drawable.profile, R.drawable.profile, R.drawable.profile, R.drawable.profile, R.drawable.profile,

};
String[] listviewShortDescription = new String[]{
        "Android ListView Short Description", "Android ListView Short Description", "Android ListView Short Description", "Android ListView Short Description",
        "Android ListView Short Description", "Android ListView Short Description", "Android ListView Short Description", "Android ListView Short Description",
};

public SecondFragment() {
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    List<HashMap<String, String>> aList = new ArrayList<>();
    for (int i = 0; i < 8; i++) {
        HashMap<String, String> hm = new HashMap<>();
        hm.put("listview_title", listviewTitle[i]);
        hm.put("listview_discription", listviewShortDescription[i]);
        hm.put("listview_image", Integer.toString(listviewImage[i]));
        aList.add(hm);
    }
    String[] from = {"listview_image", "listview_title", "listview_discription"};
    int[] to = {R.id.listview_image, R.id.listview_item_title, R.id.listview_item_short_description};

    SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.tab2fragment, from, to);
    ListView listView=(ListView)getActivity().findViewById(R.id.list_view);
    listView.setAdapter(simpleAdapter);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.listview_withimages_andnames,container,false);

    return view;
}

}

【问题讨论】:

    标签: android listview android-fragments


    【解决方案1】:

    从 onCreate 中删除小部件初始化并将其放在 onCreateView 中,如下所示。

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    
    
        View view=inflater.inflate(R.layout.listview_withimages_andnames,container,false);
    
        SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.tab2fragment, from, to);
    
        ListView listView=(ListView) view.findViewById(R.id.list_view);
        listView.setAdapter(simpleAdapter);
    
    
    return view;   }
    

    也替换

    getActivity().findViewById(R.id.list_view)

    view.findViewById(R.id.list_view)

    因为您应该从在 onCreateView 中初始化的片段布局中获取回收站视图,而不是从活动中获取

    【讨论】:

    • 解释原因将大大提高您的答案质量,从而增加它被投票的机会。
    • 我说我无法在 SimpleAdapter 上解析符号 aList、from、to
    • Nvm 知道了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    相关资源
    最近更新 更多