Android使用fragment實(shí)現(xiàn)左側(cè)導(dǎo)航
使用簡(jiǎn)單的fragment實(shí)現(xiàn)左側(cè)導(dǎo)航,供大家參考,具體內(nèi)容如下
先上效果圖:

MainActivity.java
public class MainActivity extends FragmentActivity {
// private Handler handler;
private ViewPager fragmentViewPager;
private ListView leftListView;
private List<Fragment> fragmentlist;
private Fragment1 fragment1;
private Fragment2 fragment2;
private ArrayList<String> leftlist = new ArrayList<String>();// left list
private ListAdapter listAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentViewPager = (ViewPager) findViewById(R.id.fragmentViewPager);
leftListView = (ListView) findViewById(R.id.leftListView);
initDatas();// left初始化。
initDatasViewPager();
// aTextViewCallBack back = (aTextViewCallBack)
// findViewById(R.id.aTextViewCallBack);
// back.setCalBack(new calBack() {
// @Override
// public void onclick() {
// // TODO Auto-generated method stub
// Toast.makeText(MainActivity.this, "這是回調(diào)的點(diǎn)擊事件哦~",
// Toast.LENGTH_LONG).show();
// }
// });
//
// new Thread(new Runnable() {
//
// @Override
// public void run() {
// // TODO Auto-generated method stub
// String str = "http://www.easyicon.net/";
// String st = getHtmlByURL.getHtmlByURL(str);
// Message msg = handler.obtainMessage(0,st);
// handler.sendMessage(msg);
// }
// }).start();
// handler = new Handler() {
// public void handleMessage(Message msg) {
// super.handleMessage(msg);
// String x = msg.obj.toString();
// Log.i("GEtHtml", x);
// };
// };
}
public void initDatas() {
for (int i = 0; i < 5; i++) {
leftlist.add("第" + i + "個(gè)");
Log.i("65", leftlist.get(i).toString());
}
ArrayList<ButtonView> buttonListView = new ArrayList<ButtonView>();
ButtonView a = new ButtonView(R.string.pay_name_weixin);
buttonListView.add(a);
ButtonView b = new ButtonView(R.string.pay_name_alipay);
buttonListView.add(b);
listAdapter = new ListAdapter(buttonListView);
leftListView.setAdapter(listAdapter);
leftListView.setDividerHeight(0);
// listview點(diǎn)擊事件
leftListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.e("tag", Integer.toString(position));
// TODO Auto-generated method stub
listAdapter.setSelectedPosition(position);
listAdapter.notifyDataSetInvalidated();
if (position % 2 == 1) {
fragmentViewPager.setCurrentItem(1);
}else{
fragmentViewPager.setCurrentItem(0);
}
}
});
}
public void initDatasViewPager() {
fragmentlist = new ArrayList<Fragment>();
fragment1 = new Fragment1();//
fragment2 = new Fragment2();//
fragmentlist.add(fragment1);
fragmentlist.add(fragment2);
fragmentViewPager.setAdapter(new FragmentAdapter(
getSupportFragmentManager(), fragmentlist, this));
fragmentViewPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
// set OnPageChangeListener in inner class
class MyOnPageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
/**
* 當(dāng)點(diǎn)擊不同id的ViewPage的時(shí)候才觸發(fā)
* */
@Override
public void onPageSelected(int arg0) {
Log.e("tag1", Integer.toString(arg0));
switch (arg0) {
case 0:
break;
case 1:
break;
case 2:
break;
}
}
}
public class ListAdapter extends BaseAdapter {
ArrayList<ButtonView> arrayList = null;
LayoutInflater inflater;
View view;
ButtonLayoutHolder buttonLayoutHolder;
LinearLayout buttonLayout = null;
TextView buttonText = null;
private int selectedPosition = -1;// 選中的位置
public ListAdapter(ArrayList<ButtonView> buttonListView) {
// TODO Auto-generated constructor stub
arrayList = buttonListView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arrayList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return arrayList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void setSelectedPosition(int position) {
selectedPosition = position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.button_layout, null, false);
buttonLayoutHolder = (ButtonLayoutHolder) view.getTag();
if (buttonLayoutHolder == null) {
buttonLayoutHolder = new ButtonLayoutHolder();
buttonLayoutHolder.buttonLayout = (LinearLayout) view
.findViewById(R.id.LinearLayoutButton);
buttonLayoutHolder.textView = (TextView) view
.findViewById(R.id.TextViewButton);
view.setTag(buttonLayoutHolder);
}
buttonLayout = buttonLayoutHolder.buttonLayout;
buttonText = buttonLayoutHolder.textView;
if (selectedPosition == position) {
buttonText.setSelected(true);
buttonText.setPressed(true);
buttonLayout.setBackgroundColor(Color.parseColor("#e4e8e9"));
buttonText.setTextColor(Color.BLUE);
} else {
buttonText.setSelected(false);
buttonText.setPressed(false);
buttonLayout.setBackgroundColor(Color.parseColor("#2f4471"));
buttonText.setTextColor(Color.WHITE);
}
buttonText.setHeight(40);
buttonText.setText(arrayList.get(position).textViewId);
return view;
}
};
}
class ButtonView {
int textViewId;
ButtonView(int tId) {
textViewId = tId;
}
}
class ButtonLayoutHolder {
LinearLayout buttonLayout;
TextView textView;
}
FragmentAdapter.java
[java] view plain copy
public class FragmentAdapter extends FragmentPagerAdapter{
private List<Fragment> listmVp;
private Context context;
public FragmentAdapter(FragmentManager fm, List<Fragment> listmVp,Context context) {
super(fm);
this.listmVp = listmVp;
this.context = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listmVp.size();
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return listmVp.get(arg0);
}
}
Fragment1.java
public class Fragment1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment1, container, false);
}
}
Fragment2.java
public class Fragment2 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment2, container, false);
}
}
源碼地址:使用fragment實(shí)現(xiàn)左側(cè)導(dǎo)航
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android ListView 子控件onClick正確獲取position的方法
這篇文章主要介紹了Android ListView 子控件onClick正確獲取position的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-01-01
Android中Listview點(diǎn)擊item不變顏色及設(shè)置listselector 無(wú)效的解決方案
這篇文章主要介紹了Android中Listview點(diǎn)擊item不變顏色及設(shè)置listselector 無(wú)效的原因及解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Android使用JobScheduler定期推送本地通知實(shí)例代碼
本篇文章主要介紹了Android使用JobScheduler定期推送本地通知實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Android自定義View實(shí)現(xiàn)內(nèi)存清理加速球效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)內(nèi)存清理加速球的效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Android隱藏和沉浸式虛擬按鍵NavigationBar的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
一文詳解如何在Flutter中使用導(dǎo)航Navigator
一個(gè)APP如果沒(méi)有頁(yè)面跳轉(zhuǎn)那么是沒(méi)有靈魂的,頁(yè)面跳轉(zhuǎn)的一個(gè)常用說(shuō)法就是Navigator。那么在flutter中如何使用Navigator呢?本文就來(lái)和大家詳細(xì)聊聊2023-02-02
Android 控制車載藍(lán)牙播放音樂(lè)詳解流程
本篇文章介紹了手機(jī)端音樂(lè)暫停和播放狀態(tài),從服務(wù)端告訴客戶端、設(shè)備端實(shí)現(xiàn)暫停、播放、上一首、下一首等功能的實(shí)現(xiàn),通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-10-10

