android标题栏RadioButton实现,下面展示切换viewpager,fragment,内容是listview

这篇博客介绍如何使用RadioButton在标题栏中实现页面切换功能,通过结合viewpager和fragment,内容区域显示ListView。提供了完整的项目代码,包括eclipse和Android Studio两个版本的下载链接,以及代码实现的详细层次说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能:标题栏用RadioGroup,RadioButton来实现,下面的展示由viewpager和fragment组合实现,内容为listView。 

下载整个项目代码,可到我的资源页下载:http://download.youkuaiyun.com/detail/qq_29614465/9452527,包含eclipse和Android studio两种版本哟!效果如下:

1.2.

3.还可以滑动

代码层次:

UserFormalPActivity.java

   import 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;
        }
    }
}
MainViewPagerAdapter.java
import 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) ;
SystemMadapter.java

importandroid.content.Context;

import 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;
    }
}
SystemMentity.java

/**

 * 实体类
 * 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;
    }
}
FormalAAFragment,FormalBBFragment,FormalCCFragment几乎都是一样的

import android.os.Bundle;

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;
    }
}
OK,布局文件除了system_formal.xml,和一些drawable的我就不写了,博客太长了,显得乱,大家看图片吧,想要也可以去下载代码。

<?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上传的。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值