Android App 에 서 는 ListFragment 의 인 스 턴 스 튜 토리 얼 을 사용 합 니 다.

ListFragment 는 Fragment 에 계승 된다.따라서 Fragment 의 특성 을 가지 고 activity 의 일부분 으로 할 수 있 으 며 페이지 디자인 을 더욱 유연 하 게 하기 위해 서 입 니 다.
Fragment 에 비해 ListFragment 의 내용 은 목록(list)으로 표 시 됩 니 다.ListFragment 의 레이아웃 은 기본적으로 ListView 를 포함 합 니 다.따라서 ListFragment 에 대응 하 는 레이아웃 파일 에 android:id 를'@android:id/list'로 지정 한 ListView 컨트롤 을 지정 해 야 합 니 다!
ListFragment 기본 사용
Activity 에 ListFragment 를 표시 하 는 절 차 를 소개 합 니 다.
1.Activity 에 대응 하 는 코드

public class FragmentTest extends Activity {
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
 } 
}
2.Activity 에 대응 하 는 레이아웃

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal" >

 <fragment 
  android:name="com.skw.fragmenttest.MyListFragment"
  android:id="@+id/myfragment"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

</LinearLayout>

설명:이 Activity 의 레이아웃 에는 Fragment 하나만 포함 되 어 있 습 니 다.다음은 MyList Fragment 의 내용 을 살 펴 보 겠 습 니 다.
3.MyListFragment 의 내용

public class MyListFragment extends ListFragment {
 private static final String TAG = "##MyListFragment##";

 private ListView selfList;

 String[] cities = {
   "Shenzhen",
   "Beijing",
   "Shanghai",
   "Guangzhou",
   "Wuhan",
   "Tianjing",
   "Changsha",
   "Xi'an",
   "Chongqing",
   "Guilin",
 };

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) {
  Log.d(TAG, "onCreateView");
  return inflater.inflate(R.layout.list_fragment, container, false);
 }


 @Override
 public void onCreate(Bundle savedInstanceState) {
  Log.d(TAG, "onCreate");
  super.onCreate(savedInstanceState);
  //   ListFragment   ListView, @id/android:list
  this.setListAdapter(new ArrayAdapter<String>(getActivity(), 
    android.R.layout.simple_list_item_1, cities));

 }

 public void onListItemClick(ListView parent, View v, 
   int position, long id) {
  Log.d(TAG, "onListItemClick");
  Toast.makeText(getActivity(), "You have selected " + cities[position],
    Toast.LENGTH_SHORT).show();
 } 
}

설명:MyListFragment 는 사용자 정의 ListFragment 입 니 다.list 를 사 용 했 습 니 다.fragment.xml 를 레이아웃 으로 하고 android.R.layot.simple 을 통 해list_item_1.ListView 의 모든 항목 을 표시 합 니 다.
4. list_fragment.xml 내용

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >

 <!-- ListFragment   android:id    "@id/android:list" -->
 <ListView
  android:id="@id/android:list"
  android:layout_width="match_parent"
  android:layout_height="match_parent" 
  android:drawSelectorOnTop="false"
  />

</LinearLayout>

'Activity 의 레이아웃 과 코드'는 앞 과 마찬가지 로 설명 을 반복 하지 않 습 니 다.
5.MyListFragment 의 내용

public class MyListFragment extends ListFragment {
 private static final String TAG = "##MyListFragment##";

 private ListView selfList;

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) {
  Log.d(TAG, "onCreateView");
  return inflater.inflate(R.layout.list_fragment, container, false);
 }

 @Override
 public void onCreate(Bundle savedInstanceState) {
  final String[] from = new String[] {"title", "info"};
  final int[] to = new int[] {R.id.text1, R.id.text2};

  Log.d(TAG, "onCreate");
  super.onCreate(savedInstanceState);
  //   SimpleAdapter, from to    
  SimpleAdapter adapter = new SimpleAdapter(
    this.getActivity(), getSimpleData(), 
    R.layout.item, from, to);
  this.setListAdapter(adapter);
 }

 public void onListItemClick(ListView parent, View v, 
   int position, long id) {
  Log.d(TAG, "onListItemClick");
  Toast.makeText(getActivity(), 
    "You have selected " + position,
    Toast.LENGTH_SHORT).show();
 }

 private List<Map<String, Object>> getSimpleData() {
  List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

  Map<String, Object> map = new HashMap<String, Object>();
  map.put("title", "Ferris wheel");
  map.put("info", "Suzhou Ferris wheel");
  list.add(map);

  map = new HashMap<String, Object>();
  map.put("title", "Flower");
  map.put("info", "Roser");
  list.add(map);

  map = new HashMap<String, Object>();
  map.put("title", "Disk");
  map.put("info", "Song Disk");
  list.add(map);

  return list;
 }
}

설명:MyListFragment 는 R.layot.list 를 사 용 했 습 니 다.fragment 를 레이아웃 으로 하고 ListView 의 모든 항목 에 R.layot.item 을 레이아웃 으로 사용 합 니 다.
6. list_fragment.xml 내용

    android:id="@id/android:list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawSelectorOnTop="false"
    />
7.item.xml 의 내용

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >

 <TextView android:id="@+id/text1"
  android:textSize="12sp"
  android:textStyle="bold"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>

 <TextView android:id="@+id/text2"
  android:textSize="24sp"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>

</LinearLayout>

ListFragment 인 스 턴 스
인 스 턴 스 설명:ListFragment 2 개 를 포함 하여 activity 를 만 듭 니 다.첫 번 째 ListFragment 는 ListView 각 줄 의 내용 을 사용 하여 안 드 로 이 드 가 자체 적 으로 가지 고 있 는 android.R.layot.simplelist_item_1 레이아웃 으로 표시 하기;두 번 째 ListFragment 의 줄 마다 내용 은 사용자 정의 layot 파일 을 통 해 표시 되 며 줄 마다 두 텍스트 를 표시 합 니 다.
activity 에 대응 하 는 layot 파일 코드:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal" >

 <fragment 
  android:name="com.skywang.app.ListFragmentImpl"
  android:id="@+id/fragment1" 
  android:layout_weight="1"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

 <fragment 
  android:name="com.skywang.app.ListFragmentSelf"
  android:id="@+id/fragment2" 
  android:layout_weight="1"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

</LinearLayout>

설명:
(01)이 layot 레이아웃 은 두 개의 fragment 를 포함 합 니 다.
activity 코드:

package com.skywang.app;

import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;

public class ListFragmentTest extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.list_fragment_test);  
 }
}

설명:
(01)onCreate View()에서 list 호출fragment_impl 은 이 ListFragment 의 레이아웃 파일 입 니 다.
(02)onCreate()에서 setListAdapter()를 통 해 android.R.layot.simple 을 설정 합 니 다.list_item_1.ListView 각 줄 의 레이아웃 파일 로 cities 를 데이터 의 모든 내용 으로 설정 합 니 다.
ListFragment Impl.java 의 코드:

package com.skywang.app;

import android.app.ListFragment;
import android.widget.ListView; 
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.util.Log;
import android.widget.Toast;
import android.widget.SimpleAdapter;

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

public class ListFragmentImpl extends ListFragment{
 private static final String TAG = "ListFragmentImpl";
 
 private ListView selfList;
 
 String[] cities = {
   "Shenzhen",
   "Beijing",
   "Shanghai",
   "Guangzhou",
   "Wuhan",
   "Tianjing",
   "Changsha",
   "Xi'an",
   "Chongqing",
   "Guilin",
 };

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) {
  Log.d(TAG, "onCreateView");
  return inflater.inflate(R.layout.list_fragment_impl, container, false);
 }
 

 @Override
 public void onCreate(Bundle savedInstanceState) {
  Log.d(TAG, "onCreate");
  super.onCreate(savedInstanceState);
  //   ListFragment   ListView, @id/android:list
  this.setListAdapter(new ArrayAdapter<String>(getActivity(), 
    android.R.layout.simple_list_item_1, cities));
  
 }
 
 public void onListItemClick(ListView parent, View v, 
   int position, long id) {
  Log.d(TAG, "onListItemClick");
  Toast.makeText(getActivity(), 
    "You have selected " + cities[position],
    Toast.LENGTH_SHORT).show();
 } 
}

list_fragment_impl.xml 내용:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 
 <!-- ListFragment   android:id    "@id/android:list" -->
 <ListView
  android:id="@id/android:list"
  android:layout_width="match_parent"
  android:layout_height="match_parent" 
  android:drawSelectorOnTop="false"
  />
 
</LinearLayout>

ListFragment Self.java 의 코드:
package com.skywang.app;

import android.app.ListFragment;
import android.widget.ListView; 
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.util.Log;
import android.widget.Toast;
import android.widget.SimpleAdapter;

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

public class ListFragmentSelf extends ListFragment{
 private static final String TAG = "ListFragmentImpl";
 
 private ListView selfList;
 
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) {
  Log.d(TAG, "onCreateView");
  return inflater.inflate(R.layout.list_fragment_self, container, false);
 }
 

 @Override
 public void onCreate(Bundle savedInstanceState) {
  final String[] from = new String[] {"title", "info"};
  final int[] to = new int[] {R.id.text1, R.id.text2};
  
  Log.d(TAG, "onCreate");
  super.onCreate(savedInstanceState);
  //   SimpleAdapter, from to    
  SimpleAdapter adapter = new SimpleAdapter(
    this.getActivity(), getSimpleData(), 
    R.layout.two_textview, from, to);
  this.setListAdapter(adapter);
 }
 
 public void onListItemClick(ListView parent, View v, 
   int position, long id) {
  Log.d(TAG, "onListItemClick");
  Toast.makeText(getActivity(), 
    "You have selected " + position,
    Toast.LENGTH_SHORT).show();
 }
 
 private List<Map<String, Object>> getSimpleData() {
  List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  
  Map<String, Object> map = new HashMap<String, Object>();
  map.put("title", "Ferris wheel");
  map.put("info", "Suzhou Ferris wheel");
  list.add(map);

  map = new HashMap<String, Object>();
  map.put("title", "Flower");
  map.put("info", "Roser");
  list.add(map);

  map = new HashMap<String, Object>();
  map.put("title", "Disk");
  map.put("info", "Song Disk");
  list.add(map);
  
  return list;
 }
}

설명:
(01)onCreate View()에서 list 호출fragment_self 는 이 ListFragment 의 레이아웃 파일 입 니 다.
(02)onCreate()에서 setListAdapter()를 통 해 R.layot.to 설정textview 는 ListView 줄 마다 레이아웃 파일 입 니 다.
list_fragment_self.xml 의 내용:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 
 <!-- ListFragment   android:id    "@id/android:list" -->
 <ListView
  android:id="@id/android:list"
  android:layout_width="match_parent"
  android:layout_height="match_parent" 
  android:drawSelectorOnTop="false"
  />
 
</LinearLayout>

two_textview.xml 내용:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 
 <TextView android:id="@+id/text1"
  android:textSize="12sp"
  android:textStyle="bold"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>

 <TextView android:id="@+id/text2"
  android:textSize="24sp"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>
  
</LinearLayout>
효과 그림:
2016511110549079.png (400×683)

좋은 웹페이지 즐겨찾기