将 listActivity 转换为 listFragment

convert listActivity into listFragment

我正在尝试将 listActivity 转换为 listFragment,这一切都在适配器中完成,所以我不知道在 onCreateView 中 return 做什么:/ 这是 listActivity:

    public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    // if extending Activity
    //setContentView(R.layout.activity_main);

    // 1. pass context and data to the custom adapter
    MyAdapter adapter = new MyAdapter(getListView().getContext(), generateData());

    // if extending Activity 2. Get ListView from activity_main.xml
    //ListView listView = (ListView) findViewById(R.id.listview);

    // 3. setListAdapter
    //listView.setAdapter(adapter); if extending Activity
    setListAdapter(adapter);
}

private ArrayList<Model> generateData(){
    ArrayList<Model> models = new ArrayList<Model>();
    models.add(new Model("Group Title"));
    models.add(new Model(R.drawable.star_icon,"Menu Item 1","1"));
    models.add(new Model(R.drawable.star_icon,"Menu Item 2","2"));
    models.add(new Model(R.drawable.star_icon,"Menu Item 3","12"));

    return models;
}

so i don't know what to return in the onCreateView

如果您继承自 ListFragment,则无需实现 onCreateView()。正如 ListActivity 默认给你一个 ListView(如果你不调用 setContentView()ListFragment 默认给你一个 ListView(如果你不覆盖onCreateView().

将上面显示的代码移到 ListFragmentonViewCreated() 中——它在 onCreateView() 完成后调用,这样你就有了 ListView —— 你应该设置。

例如:

public class OtherFragment extends ListFragment {
  private static final String[] items= { "lorem", "ipsum", "dolor",
      "sit", "amet", "consectetuer", "adipiscing", "elit", "morbi",
      "vel", "ligula", "vitae", "arcu", "aliquet", "mollis", "etiam",
      "vel", "erat", "placerat", "ante", "porttitor", "sodales",
      "pellentesque", "augue", "purus" };

  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    setListAdapter(new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_list_item_1, items));
  }
}