Android使用fragment实现左侧导航
作者:iworkiwin 时间:2023-10-30 10:02:09
使用简单的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
标签:Android,fragment,导航
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
spring BeanProcessor接口详解
2021-12-26 07:32:17
![](https://img.aspxhome.com/file/2023/3/108223_0s.jpg)
C语言实现贪吃蛇小游戏开发
2022-08-20 00:03:07
![](https://img.aspxhome.com/file/2023/7/120827_0s.jpg)
C#使用Data Annotations进行手动数据验证
2022-11-19 11:23:15
![](https://img.aspxhome.com/file/2023/5/122755_0s.gif)
insert语句太长用StringBuilder优化一下
2023-03-29 17:56:44
Spring AOP底层原理及代理模式
2023-05-05 14:19:38
C++普通函数指针与成员函数指针实例解析
2022-09-29 10:19:36
init output stream初始化输出流源码分析
2023-01-08 09:53:20
![](https://img.aspxhome.com/file/2023/8/90188_0s.jpg)
Java项目开发命名规范(动力节点Java学院整理)
2021-06-24 07:16:56
Java基础学习之方法的重载知识总结
2023-10-27 01:45:15
![](https://img.aspxhome.com/file/2023/2/96132_0s.png)
Android实现Service重启的方法
2021-10-01 09:25:25
Android M(6.x)使用OkHttp包解析和发送JSON请求的教程
2021-11-25 21:17:58
C#并发编程入门教程之概述
2022-08-08 09:44:23
Android开发之针对联系人的封装
2023-12-24 05:56:25
![](https://img.aspxhome.com/file/2023/6/137506_0s.png)
如何使用JJWT及JWT讲解和工具类
2023-10-28 04:21:35
spring缓存自定义resolver的方法
2021-05-30 17:07:56
![](https://img.aspxhome.com/file/2023/9/76259_0s.png)
Android 使用maven publish插件发布产物(aar)流程实践
2023-03-04 18:07:45
![](https://img.aspxhome.com/file/2023/7/138977_0s.png)
详解JAVA中的Collection接口和其主要实现的类
2021-06-20 19:14:08
C#之CLR内存字符串常量池(string)
2023-04-23 00:09:12
![](https://img.aspxhome.com/file/2023/1/106531_0s.png)
Android入门之实现自定义Adapter
2021-09-30 17:34:10
![](https://img.aspxhome.com/file/2023/3/88673_0s.jpg)
java 定时器线程池(ScheduledThreadPoolExecutor)的实现
2023-03-31 20:52:10