21 RadioGroup ListFragment

  • 结构
    这里写图片描述

MainActivity.java

package com.qf.day21_radiogroupfragment_demo3;import java.util.ArrayList;
import java.util.List;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;public class MainActivity extends FragmentActivity {private RadioGroup rgMain;//Fragment数据源private List<Fragment> list = new ArrayList<Fragment>();private RadioButton[] rbs;private String[] titles={"news","happy","dz","cj"};private int currentIndex =0;//当前展示的Fragment@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rgMain = (RadioGroup) findViewById(R.id.rg_main);initData();initTab();}//初始化标签private void initTab(){//改变标签内容rbs = new RadioButton[rgMain.getChildCount()];for(int i=0;i<rgMain.getChildCount();i++){rbs[i] = (RadioButton) rgMain.getChildAt(i);rbs[i].setText(titles[i]);}//点击按钮进行替换rgMain.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubfor(int i=0;i<rgMain.getChildCount();i++){if(rbs[i].getId() == checkedId){//当前按钮被点击//开始替换//replaceFragment(i);switchFragment(i);}}}});}//replace  缺点  影响性能public void replaceFragment(int index){MyFragment myFragment = MyFragment.getInstance(index+1);getSupportFragmentManager().beginTransaction().replace(R.id.layout_content_id, list.get(index)).commit();}//替换   使用 show() 和hide() 方法  减少性能开销public void  switchFragment(int targetIndex){FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();//点击的Fragment(目标)Fragment targetFragment = list.get(targetIndex);//当前的FragmentFragment currentFragment = list.get(currentIndex);//点击的 按钮对象的Fragment 存在    show()展示出来  隐藏当前的Fragmentif(!targetFragment.isAdded()){transaction.add(R.id.layout_content_id, targetFragment).hide(currentFragment).commit();}else{transaction.show(targetFragment).hide(currentFragment).commit();}//当前展示的Fragment就是点击替换的FragmentcurrentIndex = targetIndex;}//初始化数据private void initData(){for(int i=0;i<rgMain.getChildCount();i++){MyFragment myFragment = MyFragment.getInstance(i+1);list.add(myFragment);}//程序运行  默认展示第一个FragmentgetSupportFragmentManager().beginTransaction().add(R.id.layout_content_id, list.get(0)).commit();}}

MyFragment.java

package com.qf.day21_radiogroupfragment_demo3;import java.util.ArrayList;
import java.util.List;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;public class MainActivity extends FragmentActivity {private RadioGroup rgMain;//Fragment数据源private List<Fragment> list = new ArrayList<Fragment>();private RadioButton[] rbs;private String[] titles={"news","happy","dz","cj"};private int currentIndex =0;//当前展示的Fragment@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rgMain = (RadioGroup) findViewById(R.id.rg_main);initData();initTab();}//初始化标签private void initTab(){//改变标签内容rbs = new RadioButton[rgMain.getChildCount()];for(int i=0;i<rgMain.getChildCount();i++){rbs[i] = (RadioButton) rgMain.getChildAt(i);rbs[i].setText(titles[i]);}//点击按钮进行替换rgMain.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubfor(int i=0;i<rgMain.getChildCount();i++){if(rbs[i].getId() == checkedId){//当前按钮被点击//开始替换//replaceFragment(i);switchFragment(i);}}}});}//replace  缺点  影响性能public void replaceFragment(int index){MyFragment myFragment = MyFragment.getInstance(index+1);getSupportFragmentManager().beginTransaction().replace(R.id.layout_content_id, list.get(index)).commit();}//替换   使用 show() 和hide() 方法  减少性能开销public void  switchFragment(int targetIndex){FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();//点击的Fragment(目标)Fragment targetFragment = list.get(targetIndex);//当前的FragmentFragment currentFragment = list.get(currentIndex);//点击的 按钮对象的Fragment 存在    show()展示出来  隐藏当前的Fragmentif(!targetFragment.isAdded()){transaction.add(R.id.layout_content_id, targetFragment).hide(currentFragment).commit();}else{transaction.show(targetFragment).hide(currentFragment).commit();}//当前展示的Fragment就是点击替换的FragmentcurrentIndex = targetIndex;}//初始化数据private void initData(){for(int i=0;i<rgMain.getChildCount();i++){MyFragment myFragment = MyFragment.getInstance(i+1);list.add(myFragment);}//程序运行  默认展示第一个FragmentgetSupportFragmentManager().beginTransaction().add(R.id.layout_content_id, list.get(0)).commit();}}

selecte_main.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" ><item android:state_checked="true" android:drawable="@android:drawable/ic_menu_add"></item><item android:state_checked="false" android:drawable="@android:drawable/ic_menu_call"></item></selector>

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" ><RadioGroup
        android:id="@+id/rg_main"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><RadioButton
            android:id="@+id/rb1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:button="@null"android:drawableTop="@drawable/selecte_main"android:gravity="center"android:checked="true"android:text="新闻" /><RadioButton
             android:id="@+id/rb2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:button="@null"android:drawableTop="@drawable/selecte_main"android:gravity="center"android:text="娱乐" /><RadioButton
             android:id="@+id/rb3"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:button="@null"android:drawableTop="@drawable/selecte_main"android:gravity="center"android:text="体育" /><RadioButton
             android:id="@+id/rb4"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:button="@null"android:drawableTop="@drawable/selecte_main"android:gravity="center"android:text="财经" /></RadioGroup><FrameLayout android:id="@+id/layout_content_id"android:layout_width="match_parent"android:layout_height="match_parent"></FrameLayout></LinearLayout>

fragment_layout.xml

<?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" ><TextView android:id="@+id/tv_show"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#f00"android:text="AAA"/><ListView
        android:id="@android:id/list" android:layout_width="match_parent"android:layout_height="match_parent"></ListView></LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageView android:id="@+id/iv_item"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_launcher"/><TextView android:id="@+id/title_item"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/iv_item"android:text="name"/><TextView android:id="@+id/content_item"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/iv_item"android:text="aaa"android:layout_alignBottom="@id/iv_item"/></RelativeLayout>

转载于:https://www.cnblogs.com/muyuge/p/6152205.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XML与过滤器、事务管理

一 XML 二&#xff1a;过滤器&#xff08;Filter&#xff09; 功能&#xff1a; WebFilter("/demo01.do") public class Demo01Filter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void doF…

Mybatis获取参数值的各种情况

public interface SelectMapper {//根据ID查询用户信息User getUserById(Param("id") Integer id);//查询所有用户信息List<User> getAllUser();//查询用户信息的总记录数Integer getCount();//查询用户信息使用mapMap<String, Object> getUserByIdToMap…

Mybatis中的配置文件xml

在配置的过程中&#xff1a;我们的mapper接口要与映射的XML文件处在同一位置下&#xff08;层级相同&#xff09; 比如&#xff1a;java.mybatis.mapper.ParameterMapper 对应: resoureces.mybatis.mapper.ParameterMapper 否则在进行测试的时候会出现无效的绑定 Invalid b…

Mybatis中处理多对一的映射关系

数据库中的结构&#xff1a; 实体类&#xff1a; 最终结果&#xff1a; 一&#xff1a;级联属性查询 自定义resultMap中可以这样设置&#xff1a; <resultMap id"empAndDeptResultMapOne" type"Emp"><id property"eid" column"ei…

Mybatis中处理一对多的映射关系

一对多与多对一的区别&#xff1a; 以部门表为单位&#xff0c;一个部门会有很多员工为一对多的关系 以员工表为单位&#xff0c;会有多个员工在一个部门中为多对一的关系 一&#xff1a;collection 由于一个部门中会有多个员工&#xff0c;即一对多的关系因此我们需要的实体…

Mybatis中缓存

1、一级缓存 SqlSession sqlSession SqlSessionUtils.getSqlSession();CacheMapper mapper sqlSession.getMapper(CacheMapper.class);Emp emp1 mapper.getEmpByEid(1);System.out.println(emp1);Emp emp2 mapper.getEmpByEid(1);System.out.println(emp2); 可以看到只访问…

HTML页面、CSS样式的以及js学习与介绍

html决定页面显示什么内容 css决定页面的美观程度html语言是解释型语言&#xff0c;解释不出来就不管了&#xff0c;不区分大小写 浏览器是容错的1&#xff09;html页面由一对标签组成:<html><html/>&#xff0c;分别成为开始标签和结束标签 2&#xff09;title:表…

lwip连续发数据卡死_Mysteel:12月全球铁矿石发运量稳中微增 进口矿咋走?

十一月份铁矿石供需差收紧价格上行。展望十二月份&#xff0c; 全球铁矿石发运稳中微增&#xff0c;到港小幅下降&#xff0c;澳洲方面&#xff0c;力拓财年末冲量将带来部分增量&#xff0c;但BHP仍受检修影响环比或将有所减量&#xff0c;整体来看&#xff0c;预计澳洲发运量…

CS模式与BS模式以及Tomcat的了解

一、CS与BS的差异 二、Tomcat Tomcat :web container 可执行文件目录 配置文件 部署项目的一个文件夹&#xff08;现在不怎么用这种方法&#xff09; 在webapp中&#xff0c;可以创建自己的web项目&#xff1a; 里面需要包含一个文件夹&#xff1a;WEB-INF以及自己的网页 之后…

贴花纸怎么贴_电子便签贴怎么使用?怎么在电脑上贴便签

电脑上的电子便签贴怎么使用&#xff1f;怎么在电脑上贴便签&#xff1f;Windows电脑上的便签贴小工具有很多&#xff0c;以敬业签桌面便签贴为例&#xff0c;将这个便签贴小工具在电脑桌面上安装好之后&#xff0c;注册一个会员账号和密码&#xff0c;可参考如下教程演示的步骤…

Servlet学习

一、以添加数据为例 在add.html页面的表单中&#xff0c;我们输入数据&#xff0c;通过点击添加操作&#xff0c;根据action发给我们服务器端的add组件&#xff0c;这个add组件会用JDBC中添加的方法向数据库中添加数据。 1、add组件 AddServlet servlet&#xff08;服务器端…

b 树查找时间复杂度_心里没点 B 树。。。

B 树和红黑树的动画小吴还在制作当中&#xff0c;比想象中的复杂好多好多好多&#xff0c;今天先来一个图解版的 B 树。。。1 引言数据库的增删改查等操作是开发过程中最为常见也是尤为重要的&#xff0c;尤其是现在大数据的兴起&#xff0c;导致数据存储量急剧增加&#xff0c…

HTTP与会话的学习

一、HTTP协议 请求 1请求行 2、请求消息头 3、请求主体 响应 1、响应行 2、响应头 3、响应体 二、会话 HTTP无状态&#xff1a;服务器无法判断两次请求是否为同一个客户端发过来的。 因此通过会话跟踪来解决这个问题 Overrideprotected void service(HttpServletRequest req,…

3650m5服务器内存选择 ibm_各大品牌服务器租用价格表明细(附详细表单)

企业在进行IT建设的花费肯定不少&#xff0c;其中就包括了服务器租用。那如何租到性价比高的服务器&#xff1f;可以先了解一下各大品牌的报价情况&#xff0c;对比服务器租用价格表&#xff0c;找到价格合适的。不过也不可一味的遵从低价格&#xff0c;毕竟一分钱一分货也是一…

服务器内部转发以及客户端重定向概念的学习

一、服务器内部转发 一次请求响应的过程&#xff0c;对于客户端而言&#xff0c;内部经过了多少次转发是不知道的。 既地址栏不会变化 二、客户端重定向 客户端向上面的组件发送请求&#xff0c;组件里由response.sendRedirect方法指向demo07&#xff0c;于是服务器端里上面的…

cad幕墙下料lisp_石材幕墙屋面不锈钢角钢接闪带施工方法

石材幕墙屋面不锈钢角钢接闪带施工方法 摘要&#xff1a;石材幕墙屋面接闪带传统安装方法采用镀锌圆钢、不锈钢管明敷或加接闪小针等防雷方式&#xff0c;安装后易产生变形、幕墙漏水等问题&#xff0c;锈蚀会污染石材表面&#xff0c;影响建筑立面效果&#xff0c;清洗幕墙困…