Android使用fragment实现左侧导航
作者:iworkiwin 发布时间:2023-10-30 10:02:09
标签:Android,fragment,导航
使用简单的fragment实现左侧导航,供大家参考,具体内容如下
先上效果图:
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, "这是回调的点击事件哦~",
// 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 + "个");
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点击事件
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
}
/**
* 当点击不同id的ViewPage的时候才触发
* */
@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实现左侧导航
来源:http://blog.csdn.net/iworkiwin/article/details/68931191


猜你喜欢
- 前言倒计时功能在游戏中一直很重要, 不管是活动开放时间,还是技能冷却。 本文实现了一个通用倒计时组件,实现了倒计时的基本功能,支持倒计时结束
- 标准函数with与run和apply with函数with函数接收两个参数:第一个参数可以是任意类型的对象,第二个参数是一个Lambda表达
- 项目中最近用到各种图表,本来打算用第三方的,例如MPAndroid,这是一个十分强大的图表库,应用起来十分方便,但是最终发现和设计不太一样,
- 0x01 新建SpringBoot项目1. 新建maven工程ps:在上一教程的基础上操作,就不用新建项目了,请参考文章:SpringBoo
- 前言:项目中数据分页是一个很常见的需求,目前大部分项目都会使用pagehelper进行分页,那么在使用的过程中是否考虑如下问题?一、基本集成
- 示例代码本文分析示例代码如下:launch(Dispatchers.Main) { flow { em
- 我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误。在网上搜了下,这个与MANIFEST
- Java 8 中 Function 接口的介绍Java 8 中提供了一个函数式接口 Function,这个接口表示对一个参数做一些
- 前言RecyclerView几乎在每个app里面都有被使用,但凡使用了列表就会采用分页加载进行数据请求和加载。android 官方也推出了分
- 本文为大家整理了C#图片切割、图片压缩、缩略图生成的实现代码,大家可以收藏,方便以后使用,具体内容如下/// 图片切割函数 /// <
- 开发中经常需要将某个文件向另一个应用程序传递,如图片上传到另一个应用程序、文件在不同存储路径之间的复制粘贴等都需要共享文件,可以这样理解接收
- 简介在多线程中解决线程安全的问题时常用到Synchronized,现在的synchronized相对于早期的synchronized做出了优
- 我们在k8s集群成功搭建了Prometheus服务。今天,我们将在springboot2.x中使用prometheus记录指标。一、我们需要
- SpringFramework5.0是自2013年12月版本4发布之后SpringFramework的第一个主发行版。SpringFrame
- 队列的定义:队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 (1)允许删除的一端称为队头(Fro
- 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码,具体内容如下①
- ijkPlayer 编译全格式支持 .so库基本步骤拉取docker镜像//命令行执行如下命令即可 docker pull adajqd/i
- 什么是JPA一种规范,并非ORM框架,也就是ORM上统一的规范spring-boot-starter-data-jpa 
- 我前面几篇博客中提到过.net中的事件与Windows事件的区别,本文讨论的是前者,也就是我们代码中经常用到的Event。Event很常见,
- springboot项目main函数启动在controller包下新建appController类package controller;im