android动态使用FrameLayout(简单使用)

main.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="horizontal" >

    <FrameLayout
        android:id="@+id/titles"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <ListView
                android:id="@+id/listview"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >
            </ListView>

            <ProgressBar
                android:id="@+id/progressBar1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:visibility="gone" />
        </RelativeLayout>
    </FrameLayout>

    <FrameLayout
        android:id="@+id/details"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:background="?android:attr/detailsElementBackground" >
    </FrameLayout>

</LinearLayout>


title.xml

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

    <ImageView
        android:id="@+id/imageview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:background="@drawable/ic_launcher"
        />

    <TextView
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        />

</LinearLayout>


TitlesFragment.java

package com.xuzhi.fragment;

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

import android.app.Activity;
import android.app.AlertDialog;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;

public class TitlesFragment extends ListFragment
{

	// boolean mDualPane;

	int mCurCheckPosition = 0;

	private static List<String> list = new ArrayList<String>();

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		System.out.println("Fragment-->onCreate");
	}

	public static TitlesFragment newInstance()
	{
		TitlesFragment details = new TitlesFragment();
		return details;
	}

	Thread th = new Thread()
	{

		@Override
		public void run()
		{
			try
			{
				sleep(5000);
			}
			catch (InterruptedException e)
			{
				e.printStackTrace();
			}
			for (int i = 0; i < 100; i++)
			{
				list.add("csh" + i);
			}
			Message msg = new Message();
			msg.what = 1;
			handler.sendMessage(msg);
			super.run();
		}

	};

	Handler handler = new Handler()
	{

		@Override
		public void handleMessage(Message msg)
		{
			mInvock1.callInvock();
			super.handleMessage(msg);
		}

	};

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		System.out.println("Fragment-->onCreateView");
		return super.onCreateView(inflater, container, savedInstanceState);
	}

	@Override
	public void onPause()
	{
		super.onPause();
		System.out.println("Fragment-->onPause");
	}

	@Override
	public void onStop()
	{
		super.onStop();
		System.out.println("Fragment-->onStop");
	}

	@Override
	public void onAttach(Activity activity)
	{
		super.onAttach(activity);
		System.out.println("Fragment-->onAttach");
	}

	@Override
	public void onStart()
	{
		super.onStart();
		System.out.println("Fragment-->onStart");
	}

	@Override
	public void onResume()
	{
		super.onResume();
		System.out.println("Fragment-->onResume");
		th.start();
	}

	@Override
	public void onDestroy()
	{
		super.onDestroy();
		System.out.println("Fragment-->onDestroy");
	}

	private ListView listviewchild;

	private void addData()
	{
		for (int i = 0; i < 5; i++)
		{
			list.add("csh" + i);
		}
	}

	private adapter mAdapter;

	private ProgressBar mProgressBar;

	@Override
	public void onActivityCreated(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
		System.out.println("Fragment-->onActivityCreted");
		addData();// 添加初始数据
		View listview = getActivity().findViewById(R.id.titles);
		mProgressBar = (ProgressBar) listview.findViewById(R.id.progressBar1);
		if (listview != null)
		{
			listviewchild = (ListView) listview.findViewById(R.id.listview);
			mAdapter = new adapter(list, getActivity());
			listviewchild.setAdapter(mAdapter);
			listviewchild.setOnItemClickListener(new OnItemClickListener()
			{

				@Override
				public void onItemClick(AdapterView<?> arg0, View arg1,
						int position, long arg3)
				{
					showDetails(position);
				}
			});
			listviewchild
					.setOnItemLongClickListener(new OnItemLongClickListener()
					{

						@Override
						public boolean onItemLongClick(AdapterView<?> arg0,
								View arg1, int postion, long arg3)
						{
							MyDialogFragment dialog =
									MyDialogFragment.newInstance(
											"确认删除" + list.get(postion) + "数据",
											postion);
							dialog.show(getFragmentManager(), "dialog");
							return false;
						}
					});
		}
		showDetails(0);// 默认显示第一个
	}

	@Override
	public void onSaveInstanceState(Bundle outState)
	{
		super.onSaveInstanceState(outState);
		outState.putInt("curChoice", mCurCheckPosition);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id)
	{
		super.onListItemClick(l, v, position, id);
		showDetails(position);
	}

	void showDetails(int index)
	{
		mCurCheckPosition = index;
		getListView().setItemChecked(index, true);
		DetailsFragment details =
				(DetailsFragment) getFragmentManager().findFragmentById(
						R.id.details);
		if (details == null || details.getShownIndex() != index)
		{
			details = DetailsFragment.newInstance(mCurCheckPosition, list);
			FragmentTransaction ft = getFragmentManager().beginTransaction();
			ft.replace(R.id.details, details);
			ft.commit();
		}
	}

	public void deleteListItem(int postion)
	{
		list.remove(postion);
		mAdapter.refearch(list);
	}

	callBack mInvock1 = new callBack()
	{

		@Override
		public void callInvock()
		{
			mAdapter.refearch(list);
		}
	};

	public interface callBack
	{

		void callInvock();
	}
}

DetailsFragment.java

package com.xuzhi.fragment;

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

import android.app.Fragment;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class DetailsFragment extends Fragment
{

	private static List<String> list = new ArrayList<String>();

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setHasOptionsMenu(true);
	}

	public static DetailsFragment newInstance(int index, List<String> li)
	{
		list = li;
		DetailsFragment details = new DetailsFragment();
		Bundle args = new Bundle();
		args.putInt("index", index);
		details.setArguments(args);
		return details;
	}

	public int getShownIndex()
	{
		return getArguments().getInt("index", 0);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		if (container == null)
			return null;
		if (list.size() == 0)
		{
			return null;
		}
		ScrollView scroller = new ScrollView(getActivity());
		TextView text = new TextView(getActivity());
		int padding =
				(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4,
						getActivity().getResources().getDisplayMetrics());
		text.setPadding(padding, padding, padding, padding);
		scroller.addView(text);
		text.setText(list.get(getShownIndex()));
		return scroller;
	}

	@Override
	public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
	{
		// TODO Auto-generated method stub
		super.onCreateOptionsMenu(menu, inflater);
		menu.add("Menu 1a").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		menu.add("Menu 1b").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{
		// TODO Auto-generated method stub
		Toast.makeText(
				getActivity(),
				"index is" + getShownIndex() + " && menu text is "
						+ item.getTitle(), 1000).show();
		return super.onOptionsItemSelected(item);
	}
}

MyDialogFragment.java

package com.xuzhi.fragment;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;

public class MyDialogFragment extends DialogFragment
{

	public static MyDialogFragment newInstance(String title, int position)
	{

		MyDialogFragment frag = new MyDialogFragment();
		Bundle args = new Bundle();
		args.putString("title", title);
		args.putInt("position", position);
		frag.setArguments(args);
		return frag;

	}

	public Dialog onCreateDialog(Bundle saveInstanceState)
	{
		// 获取对象实例化时传入的窗口标题。

		String title = getArguments().getString("title");
		// 返回提醒对话框。

		return new AlertDialog.Builder(getActivity())
		// 设置标题图标
				.setIcon(R.drawable.ic_launcher)
				// 设置标题
				.setTitle(title)
				// 设置确定按钮的标题和点击事件监听器。
				.setPositiveButton("确定", new DialogInterface.OnClickListener()
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
						int position = getArguments().getInt("position");
						((TitlesFragment) (getFragmentManager()
								.findFragmentByTag("title")))
								.deleteListItem(position);
					}
				})
				// 设置取消按钮的标题和点击事件监听器。
				.setNegativeButton("取消", new DialogInterface.OnClickListener()
				{
					@Override
					public void onClick(DialogInterface dialog, int which)
					{
					}
				})
				// 创建对话框
				.create();
	}
}

adapter.java

package com.xuzhi.fragment;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class adapter extends BaseAdapter
{

	private List<String> list;

	private Context mContext;

	public adapter(List<String> list, Context c)
	{
		this.list = list;
		this.mContext = c;
	}

	public void refearch(List<String> li){
		this.list=li;
		this.notifyDataSetChanged();
	}
	@Override
	public int getCount()
	{
		// TODO Auto-generated method stub
		return list.size();
	}

	@Override
	public Object getItem(int arg0)
	{
		// TODO Auto-generated method stub
		return list.get(arg0);
	}

	@Override
	public long getItemId(int arg0)
	{
		// TODO Auto-generated method stub
		return arg0;
	}

	@Override
	public View getView(int arg0, View view, ViewGroup arg2)
	{
		// TODO Auto-generated method stub
		view = LayoutInflater.from(mContext).inflate(R.layout.title, null);
		TextView txt = (TextView) view.findViewById(R.id.button);
		txt.setText(list.get(arg0));
		return view;
	}

}

FragmentDemoActivity.java

package com.xuzhi.fragment;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;

public class FragmentDemoActivity extends Activity
{

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}

	private void init()
	{
		TitlesFragment title;
		title =
				(TitlesFragment) getFragmentManager().findFragmentById(
						R.id.titles);
		if (title == null)
		{
			title = TitlesFragment.newInstance();
			FragmentManager fm = getFragmentManager();
			FragmentTransaction ft = fm.beginTransaction();
			ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
			ft.add(title, "title");// 设置title标记,方便用到的时候根据标记取出来
			ft.commit();
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值