2012-09-02 62 views
1

我有一个填充ListView的活动,它正在工作。因为我使用标签ViewPager,我必须使用片段而不是活动。所以有人可以告诉我,我需要改变以从我的活动中创建一个片段(FragmentActivity不能在标签中使用)。Android:填充ListView中的一个片段

package com.basnijkamp.safanagendatest; 

import java.util.HashMap; 
import java.util.LinkedList; 
import java.util.List; 
import java.util.Map; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 

public class ListSample extends Activity { 

    public final static String ITEM_TITLE = "title"; 
    public final static String ITEM_CAPTION = "caption"; 

    public Map<String,?> createItem(String title, String caption) { 
     Map<String,String> item = new HashMap<String,String>(); 
     item.put(ITEM_TITLE, title); 
     item.put(ITEM_CAPTION, caption); 
     return item; 
    } 

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

     List<Map<String,?>> september2012 = new LinkedList<Map<String,?>>(); 
     september2012.add(createItem("Electra Mining Africa 2012", "Johannesberg South Africa")); 
     september2012.add(createItem("MSV", "Brno Czech Republic")); 
     september2012.add(createItem("IMTS", "Chicago USA")); 
     september2012.add(createItem("AMB", "Stuttgart Germany")); 
     september2012.add(createItem("Den Teknise Messe", "Lillestrom Norway")); 
     september2012.add(createItem("ITM", "Plovdiv Bulgaria")); 

     List<Map<String,?>> oktober2012 = new LinkedList<Map<String,?>>(); 
     oktober2012.add(createItem("BIMU", "Milan Italy")); 
     oktober2012.add(createItem("Matek", "Istanbul")); 
     oktober2012.add(createItem("TIB", "Bucharest Romania")); 
     oktober2012.add(createItem("Vienna Tec", "Vienna Austria")); 
     oktober2012.add(createItem("Euro Blech 2012", "Hanover Germany")); 
     oktober2012.add(createItem("Technica Massan", "Stockholm Sweden")); 

     List<Map<String,?>> november2012 = new LinkedList<Map<String,?>>(); 
     november2012.add(createItem("JIMTOF", "Tokyo Japan")); 
     november2012.add(createItem("Metavak", "Gorinchem Netherlands")); 
     november2012.add(createItem("FABTECH", "Las Vegas USA")); 
     november2012.add(createItem("Prodex", "Basel Switzerland")); 
     november2012.add(createItem("EMAF 2012", "Porto Portugal")); 
     november2012.add(createItem("Manufact Indonesia", "Jakarta Indonesia")); 

     // create our list and custom adapter 
     SeparatedListAdapter adapter = new SeparatedListAdapter(this); 
     adapter.addSection("September 2012", new SimpleAdapter(this, september2012, R.layout.list_complex, 
      new String[] { ITEM_TITLE, ITEM_CAPTION }, new int[] { R.id.list_complex_title, R.id.list_complex_caption })); 
     adapter.addSection("Oktober 2012", new SimpleAdapter(this, oktober2012, R.layout.list_complex, 
      new String[] { ITEM_TITLE, ITEM_CAPTION }, new int[] { R.id.list_complex_title, R.id.list_complex_caption })); 
     adapter.addSection("November 2012", new SimpleAdapter(this, november2012, R.layout.list_complex, 
       new String[] { ITEM_TITLE, ITEM_CAPTION }, new int[] { R.id.list_complex_title, R.id.list_complex_caption })); 

     ListView list = new ListView(this); 
     list.setAdapter(adapter); 
     this.setContentView(list); 

    } 

} 

在此先感谢

回答

2

我会建议你伸出ListFragment - http://developer.android.com/reference/android/app/ListFragment.html

从这个

所以:

 ListView list = new ListView(this); 
     list.setAdapter(adapter); 
     this.setContentView(list); 

你应该这样做:

 setListAdapter (adapter); 

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

- >

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

ListSample extends Activity - >ListSample extends ListFragment

让我知道更多的细节需要,运气好的话

+0

的“onActivityCreated(savedInstanceState)公共无效的”我是否需要删除替换?和“savedInstanceState”不能解析为类型 – basnijkamp

+0

对不起,更正答案更加精确 – AlexN

+0

现在SeparatedListAdapter导致问题“构造函数SeparatedListAdapter(AgendaTab)未定义 ”以下是单独的listadapter(password:android)http ://plaatscode.be/141890/我想我几乎在解决方案 – basnijkamp