功能:标题栏用RadioGroup,RadioButton来实现,下面的展示由viewpager和fragment组合实现,内容为listView。
下载整个项目代码,可到我的资源页下载:http://download.youkuaiyun.com/detail/qq_29614465/9452527,包含eclipse和Android studio两种版本哟!效果如下:
1.2.
3.还可以滑动
代码层次:
UserFormalPActivity.java
MainViewPagerAdapter.javaimport android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.view.View; import android.widget.ImageView; import android.widget.RadioGroup; import android.widget.TextView; import com.example.qiwei.VFL.adapter.MainViewPagerAdapter; import com.example.qiwei.VFL.fragment.FormalAAFragment; import com.example.qiwei.VFL.fragment.FormalCCFragment; import com.example.qiwei.viewpager_fragment_listview.R; import com.example.qiwei.VFL.fragment.FormalBBFragment; import java.util.LinkedList; import java.util.List; /** * RadioGroup加上ViewPager * 联动实现Fragment之间的切换 * http://download.youkuaiyun.com/user/qq_29614465 */ public class UserFormalPActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener, ViewPager.OnPageChangeListener { private ImageView im_back;//标题左上方的返回图标 private ViewPager vp_formal;//显示fragment用的viewpager private TextView tv_title;//标题文字改为“系统设置” ViewPager viewPager; RadioGroup radioGroup; private List<Fragment> fragments; private FragmentManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.system_formal); manager = getSupportFragmentManager(); initView(); switchRadioButton(0);//将当前显示界面设置成首页 } private void initView() { tv_title= (TextView) findViewById(R.id.tv_title); tv_title.setText("常见问题"); im_back= (ImageView) findViewById(R.id.im_back); im_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); //添加fragment viewPager = (ViewPager) findViewById(R.id.main_view_pager_id); fragments = new LinkedList<>(); fragments.add(new FormalAAFragment()); fragments.add(new FormalBBFragment()); fragments.add(new FormalCCFragment()); MainViewPagerAdapter adapter = new MainViewPagerAdapter(manager, fragments); radioGroup = (RadioGroup) findViewById(R.id.main_rgp_id); viewPager.setAdapter(adapter); radioGroup.setOnCheckedChangeListener(this); viewPager.addOnPageChangeListener(this); } /** * radiobutton 改变选中状态 * 进行切换fragment */ @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.main_rgb_home_id: switchFragmentPager(1); break; case R.id.main_rgb_shop_id: switchFragmentPager(2); break; case R.id.main_rgb_user_id: switchFragmentPager(3); break; } } /** * 点击RadioButton之后改变ViewPager的position */ private void switchFragmentPager(int i) { viewPager.setCurrentItem(i - 1); } //--------------------------------------------viewpager的监听事件 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /** * viewpager 页面选中改变 * 同时改变radiobutton的选中状态 * @param position ViewPager的当前的位置 */ @Override public void onPageSelected(int position) { switchRadioButton(position); } @Override public void onPageScrollStateChanged(int state) { } /** * 根据ViewPager不同的位置切换相应的RadioGroup */ private void switchRadioButton(int position) { switch (position) { case 0: radioGroup.check(R.id.main_rgb_home_id); break; case 1: radioGroup.check(R.id.main_rgb_shop_id); break; case 2: radioGroup.check(R.id.main_rgb_user_id); break; } } }
SystemMadapter.javaimport android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; /** * 用于首页的ViewPager的Adapter * http://download.youkuaiyun.com/user/qq_29614465 */ public class MainViewPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; public MainViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); this.fragments = fragments; } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return fragments.size(); } }MyBaseAdapter.java
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import java.util.ArrayList; /** * 父类适配器 listview gridview * http://download.youkuaiyun.com/user/qq_29614465 */ public abstract class MyBaseAdapter<T> extends BaseAdapter { protected Context context; protected LayoutInflater inflater; public MyBaseAdapter(Context context) { super(); this.context = context; inflater=LayoutInflater.from(context); } /** * 数据 来源 */ protected ArrayList<T> baselist=new ArrayList<T>(); /** * 是否清空原数据 添加一条 top bottom * @param t */ public void addDataEnd(T t,boolean isClear){ if(isClear){ baselist.clear(); } baselist.add(t); } public void addDataTop(T t,boolean isClear){ if(isClear){ baselist.clear(); } baselist.add(0,t); } /** * 添加多条 */ public void addDataEnd(ArrayList<T> tlist,boolean isClear){ if(isClear){ baselist.clear(); } baselist.addAll(tlist); } public void addDataTop(ArrayList<T> tlist,boolean isClear){ if(isClear){ baselist.clear(); } baselist.addAll(0,tlist); } /** * 清除 */ public void clearALlData(){ baselist.clear(); } /** * 删除一条 */ public void delOneData(int id){ baselist.remove(id); } /** * 更新适配器 */ public void updateData(){ notifyDataSetChanged(); } public ArrayList<T> getData(){ return baselist; } @Override public int getCount() { // TODO Auto-generated method stub return baselist!=null?baselist.size():0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return baselist.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub return mygetview(position, convertView,parent); } public abstract View mygetview(int position, View convertView, ViewGroup parent) ;
importandroid.content.Context;
SystemMentity.javaimport android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.qiwei.VFL.entity.systemMentity; import com.example.qiwei.viewpager_fragment_listview.R; /** * 常见问题界面的ListViewr的adapter * http://download.youkuaiyun.com/user/qq_29614465 */ public class SystemMadapter extends MyBaseAdapter<systemMentity> { public SystemMadapter(Context context) { super(context); } @Override public int getCount() { return super.getCount(); } @Override public Object getItem(int position) { return super.getItem(position); } @Override public long getItemId(int position) { return super.getItemId(position); } class ViewHolder { TextView systemM_title, systemM_content, systemM_time; public ViewHolder(View view) { systemM_title = (TextView) view.findViewById(R.id.tv_system_title); systemM_content = (TextView) view.findViewById(R.id.tv_system_content); systemM_time = (TextView) view.findViewById(R.id.tv_system_time); } } @Override public View mygetview(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { convertView = inflater.inflate(R.layout.item_list_systemmessage, null); vh = new ViewHolder(convertView); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } vh.systemM_title.setText(baselist.get(position).getSystemM_title()); vh.systemM_content.setText(baselist.get(position).getSystemM_content()); vh.systemM_time.setText(baselist.get(position).getSystemM_time()); return convertView; } }
/**
FormalAAFragment,FormalBBFragment,FormalCCFragment几乎都是一样的* 实体类 * http://download.youkuaiyun.com/user/qq_29614465 */ public class systemMentity implements Comparable<systemMentity>{ private String systemM_title,systemM_content,systemM_time;//标题,内容,时间 public systemMentity() { } public String getSystemM_title() { return systemM_title; } public void setSystemM_title(String systemM_title) { this.systemM_title = systemM_title; } public String getSystemM_content() { return systemM_content; } public void setSystemM_content(String systemM_content) { this.systemM_content = systemM_content; } public String getSystemM_time() { return systemM_time; } public void setSystemM_time(String systemM_time) { this.systemM_time = systemM_time; } @Override public int compareTo(systemMentity another) { return 0; } }
import android.os.Bundle;
OK,布局文件除了system_formal.xml,和一些drawable的我就不写了,博客太长了,显得乱,大家看图片吧,想要也可以去下载代码。import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.example.qiwei.viewpager_fragment_listview.R; import com.example.qiwei.VFL.adapter.SystemMadapter; import com.example.qiwei.VFL.entity.systemMentity; import java.util.ArrayList; /** * 常见问题A fragment * http://download.youkuaiyun.com/user/qq_29614465 */ public class FormalAAFragment extends Fragment { private SystemMadapter systemMadapter;//适配器 private ListView listView_fragmentA ; private ArrayList<systemMentity> sysList; public FormalAAFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_formal_aa, container, false); systemMadapter = new SystemMadapter(getContext()); listView_fragmentA=(ListView)view.findViewById(R.id.listView_Ffragment_aa); getsysList(); systemMadapter.addDataTop(sysList, true); listView_fragmentA.setAdapter(systemMadapter); systemMadapter.notifyDataSetChanged(); return view; } /** * 假数据 */ private ArrayList<systemMentity> getsysList(){ sysList=new ArrayList<systemMentity>(); for (int i = 0; i <15 ; i++) { systemMentity sys=new systemMentity(); sys.setSystemM_title("问题问题AAA"+i); sys.setSystemM_content("问题内容AAAAA" + i); sys.setSystemM_time("时间aaaaaaa" + i); sysList.add(sys); } return sysList; } }
<?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="vertical"> <include android:id="@+id/formal_title_layout" //这是复用的一个标题布局而已 layout="@layout/title_layout" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" /> <RadioGroup android:id="@+id/main_rgp_id" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/nomal_padding_dimen" android:orientation="horizontal"> <RadioButton android:id="@+id/main_rgb_home_id" style="@style/tab_radiobutton_style" android:background="@drawable/biankuang" android:text="问题A" android:textSize="28sp" /> <RadioButton android:id="@+id/main_rgb_shop_id" style="@style/tab_radiobutton_style" android:background="@drawable/biankuang" android:text="问题B" android:textSize="28sp" /> <RadioButton android:id="@+id/main_rgb_user_id" style="@style/tab_radiobutton_style" android:background="@drawable/biankuang" android:text="问题C" android:textSize="28sp" /> </RadioGroup> <android.support.v4.view.ViewPager android:id="@+id/main_view_pager_id" //标题栏下面显示的内容部分 android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></android.support.v4.view.ViewPager> </LinearLayout>
下载整个项目代码,可到我的资源页下载:http://download.youkuaiyun.com/detail/qq_29614465/9452527,包含eclipse和Android studio两种版本哟!(eclipse可能需要自己加个appcompat_v7)
eclipse上和Android studio上的代码有些微小差距,另外,我的项目里有好多稀缺颜色的RGB码,如西红柿色,亮珊瑚色等等……
(也可以进入我个人资源中心,寻找其它可以帮到你的项目代码:http://download.youkuaiyun.com/user/qq_29614465,
注意:另外有个资源名称与本文题目类似的,是我2015.12.12上传的,那个有点问题,我正在困惑如何将它删掉。正确的完整的是2016.03.04上传的。)