Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ListFragment實例Demo

Android ListFragment實例Demo

編輯:關於Android編程

該篇文章是一個ListFragment的一個實例,通過了解該實例,更能了解比較常用的ListFragment的用法,以及各Fragment之間的數據傳遞。

實現效果圖:

該MainActivity中包括1個Button+2個Fragment(右邊兩個),點擊Button,出現中間的list列表,點擊列表中的任一項,相應item數值,會傳遞到右邊的Fragment中並顯示。

\

源代碼:

\

activity_main:



    

        

ArticleListFragment本來也應該有一個布局文件,這裡是在代碼中方便的直接添加了個ListView,也是因為該類繼承了ListFragment的緣故。

DetailFragment包含的布局文件:




    



代碼文件:

MainActivity:

package com.fragmentdemo8_listfragment;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
/**
 * ListFragment的一個實例Demo
 */
public class MainActivity extends Activity {
	private Button button;
	private FragmentManager manager;
	private FragmentTransaction transaction;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		manager = getFragmentManager();
		
		button = (Button) findViewById(R.id.button);
		/**
		 * 點擊Activity中的該按鈕,Activity會在布局中間添加ArticleListFragment,並顯示列表數據。
		 */
		button.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				transaction = manager.beginTransaction();
				ArticleListFragment articleListFragment = new ArticleListFragment();
				transaction.add(R.id.center, articleListFragment, "center");
				transaction.commit();
			}
		});
	}

}

中間的Fragment:ArticleListFragment:

package com.fragmentdemo8_listfragment;

import java.util.ArrayList;
import java.util.List;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
/**
 *ArticleListFragment繼承ListFragment,進行一些列表數據的顯示。
 */
public class ArticleListFragment extends ListFragment {
	private ArrayAdapter adapter;
	private List data;
	private FragmentManager manager;
	private FragmentTransaction transaction;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		data = new ArrayList();
		for (int i = 0; i < 30; i++) {
			data.add("rose" + i);
		}
		manager = getFragmentManager();
		adapter = new ArrayAdapter(getActivity(),
				android.R.layout.simple_list_item_1, data);
		setListAdapter(adapter);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		String str = adapter.getItem(position);
		transaction = manager.beginTransaction();

		DetailFragment detailFragment = new DetailFragment();
		/**
		 * 使用Bundle類存儲傳遞數據
		 */
		Bundle bundle = new Bundle();
		bundle.putString("id", str);
		detailFragment.setArguments(bundle);
		transaction.replace(R.id.right, detailFragment, "detail");
		transaction.commit();
		Toast.makeText(getActivity(), str, Toast.LENGTH_SHORT).show();
	}
}

右邊的Fragment:DetailFragment:

package com.fragmentdemo8_listfragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
 *從ArticleListFragment中的列表item獲取數據,然後展示在該Fragment上。 
 *
 */
public class DetailFragment extends Fragment {
	private TextView textView;
	private View view;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		view = inflater.inflate(R.layout.detail, null);
		textView = (TextView) view.findViewById(R.id.textView);

		Bundle bundle = getArguments();
		String str = bundle.getString("id");

		textView.setText(str);

		return view;
	}

}

源代碼下載:

點擊下載源碼

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved