使用ListView的Fragment – qurtyy的日志 – 网易博客

API LEVEL 11

1.使用ListFragment可实现包含Listiew的Fragment

2.在Fragment的布局中必须包含id “@android:id/list”(在代码中则是list)的Listview

3.只能使用SimpleAdapter或者SimpleCursorAdapter作为适配器

4.直接使用ListFragment的setListAdapter()来设置适配器【不要给ListView设置】

5.ListView点击事件的监听,重写ListFragment的onListItemClick(ListView l, View v, int position, long id)方法

1)新建ListFragment的布局fragment1.xml

Xml代码  收藏代码
  1. <?xml version=“1.0” encoding=“utf-8”?>  
  2. <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”  
  3.     android:layout_width=“match_parent”  
  4.     android:layout_height=“match_parent”  
  5.     android:orientation=“vertical” >  
  6.     <TextView   
  7.         android:layout_width=“fill_parent”  
  8.         android:layout_height=“wrap_content”  
  9.         android:gravity=“center”  
  10.         android:text=“Titles”  
  11.         />  
  12.       
  13.     <ListView   
  14.         android:id=“@id/android:list”  
  15.         android:layout_width=“fill_parent”  
  16.         android:layout_height=“wrap_content”  
  17.         ></ListView>  
  18.   
  19. </LinearLayout>  

2)新建Fragment继承自ListFragment,命名为Fragment1。

Java代码  收藏代码
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.support.v4.app.ListFragment;  
  9. import android.util.Log;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.ViewGroup;  
  13. import android.widget.ListView;  
  14. import android.widget.SimpleAdapter;  
  15. import android.widget.TextView;  
  16. import android.widget.Toast;  
  17.   
  18. /** 
  19.  * @描述 在Fragment中要使用ListView,就要用ListFragment 
  20.  * */  
  21. public class Fragment1 extends ListFragment   {  
  22.   
  23.     private String TAG = Fragment1.class.getName();  
  24.     private ListView list ;  
  25.     private SimpleAdapter adapter;  
  26.   
  27.     /** 
  28.      * @描述 在onCreateView中加载布局 
  29.      * */  
  30.     @Override  
  31.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  32.             Bundle savedInstanceState) {  
  33.         View view = inflater.inflate(R.layout.fragment1, container,false);  
  34.         list = (ListView) view.findViewById(android.R.id.list);  
  35.         Log.i(TAG, “——–onCreateView”);  
  36.         return view;  
  37.     }  
  38.   
  39.     @Override  
  40.     public void onCreate(Bundle savedInstanceState) {  
  41.         super.onCreate(savedInstanceState);  
  42.         b = savedInstanceState;  
  43.         Log.i(TAG, “——–onCreate”);  
  44.         String[] list = {“Class 1”,“Class 2”,“class 3”,“Class 4”,“Class 5”};  
  45.         adapter = new SimpleAdapter(getActivity(), getData(list), R.layout.item_list, new String[]{“title”}, new int[]{R.id.title});  
  46.         setListAdapter(adapter);  
  47.           
  48.     }  
  49.       
  50.     @Override  
  51.     public void onListItemClick(ListView l, View v, int position, long id) {  
  52.         super.onListItemClick(l, v, position, id);  
  53.           
  54.         System.out.println(l.getChildAt(position));  
  55.         HashMap<String, Object> view= (HashMap<String, Object>) l.getItemAtPosition(position);  
  56.         System.out.println(view.get(“title”).toString()+“+++++++++title”);  
  57.   
  58.           
  59.           
  60.   
  61.         Toast.makeText(getActivity(), TAG+l.getItemIdAtPosition(position), Toast.LENGTH_LONG).show();  
  62.         System.out.println(v);  
  63.           
  64.         System.out.println(position);  
  65.           
  66.           
  67.     }  
  68.       
  69.       
  70.       
  71.   
  72.     private List<? extends Map<String, ?>> getData(String[] strs) {  
  73.         List<Map<String ,Object>> list = new ArrayList<Map<String,Object>>();  
  74.           
  75.         for (int i = 0; i < strs.length; i++) {  
  76.             Map<String, Object> map = new HashMap<String, Object>();  
  77.             map.put(“title”, strs[i]);  
  78.             list.add(map);  
  79.               
  80.         }  
  81.           
  82.         return list;  
  83.     }  
  84.   
  85.     @Override  
  86.     public void onActivityCreated(Bundle savedInstanceState) {  
  87.         super.onActivityCreated(savedInstanceState);  
  88.         Log.i(TAG, “——–onActivityCreated”);  
  89.   
  90.     }  
  91.       
  92.     @Override  
  93.     public void onAttach(Activity activity) {  
  94.         super.onAttach(activity);  
  95.         Log.i(TAG, “———-onAttach”);  
  96.     }  
  97.   
  98. }  

3)新建Activity,继承自FragmentActivity,将Fragment添加到Activity中。命名为FragmentsActivity。

Java代码  收藏代码
  1. public class FragmentsActivity extends FragmentActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_fragments);  
  7.         Display display = getWindowManager().getDefaultDisplay();  
  8.         Fragment1 f1 = new Fragment1();  
  9.         FragmentManager manager  = getSupportFragmentManager();  
  10.         manager.beginTransaction().add(R.id.fragments, f1).commit();  
  11.   
  12.           
  13.           
  14.     }  
  15.   
  16.     @Override  
  17.     public boolean onCreateOptionsMenu(Menu menu) {  
  18.         // Inflate the menu; this adds items to the action bar if it is present.  
  19.         getMenuInflater().inflate(R.menu.fragments, menu);  
  20.         return true;  
  21.     }  
  22.   
  23. }  

效果图:

来源URL:http://qurtyy.blog.163.com/blog/static/574436812013112543231523/