Search code examples
androidandroid-listviewandroid-listfragmentlistactivity

convert listActivity into listFragment


i'm trying to convert a listActivity into listFragment, It's all done in the adapter so i don't know what to return in the onCreateView :/ Here is the 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;
}

Solution

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

    If you are inheriting from ListFragment, you do not need to implement onCreateView(). Just as ListActivity gives you a ListView by default (if you do not call setContentView(), ListFragment gives you a ListView by default (if you do not override onCreateView().

    Move your code shown above into onViewCreated() of your ListFragment — which is called after onCreateView() completes, and so you have your ListView — and you should be set.

    For example:

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