当前位置: 首页 > news >正文

通过Interface:fragment向activity传值

2019.5.21,在fzsd

上代码:标红的是接口传值和回调

activity:

public class Result_look_TabLayoutActivity extends AppCompatActivity {


    TextView inventoryAmount;
    Button button_backl;
    private TabLayout mTabLayout;
    private ViewPager mViewPager;
    private LayoutInflater mInflater;
    private List<String> mTitleList = new ArrayList<>();//页卡标题集合
    private View view1, view2, view3, view4, view5;//页卡视图
    private List<View> mViewList = new ArrayList<>();//页卡视图集合
    private List<String> listTitles;
    private List<Fragment> fragments;
    private List<TextView> listTextViews;
    private List<data_new> data_news;

    @RequiresApi(api = Build.VERSION_CODES.GINGERBREAD)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result_look_tablayout);
        mViewPager = (ViewPager) findViewById(R.id.vp_view);
        mTabLayout = (TabLayout) findViewById(R.id.tabs);
        button_backl = findViewById(R.id.bt_back);
        inventoryAmount = findViewById(R.id.inventory_amount);

        initData();
        button_backl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        inventoryAmount.setText(data_news.size() + "");


    }

    private void initData() {
        data_news = DBManager.getInstance(Result_look_TabLayoutActivity.this).queryUserList();

        listTitles = new ArrayList<>();
        fragments = new ArrayList<>();
        listTextViews = new ArrayList<>();

        listTitles.add("全部数据");
        listTitles.add("已盘");
        listTitles.add("未盘");


//        for (int i = 0; i < listTitles.size(); i++) {
        OneFragment oneFragment = OneFragment.newInstance(listTitles.get(0));
        TwoFragment twoFragment = TwoFragment.newInstance(listTitles.get(1));
        ThreeFragment threeFragment = ThreeFragment.newInstance(listTitles.get(2));
        oneFragment.setOnReeshAmount(new OneFragment.OnReeshAmount() {  //activity调用,接口回调
            @Override
            public void onClick(int title) {
                inventoryAmount.setText(title + "");
            }
        });

        twoFragment.setOnReeshAmount(new OneFragment.OnReeshAmount() {
            @Override
            public void onClick(int title) {
                inventoryAmount.setText(title + "");
            }
        });
        threeFragment.setOnReeshAmount(new OneFragment.OnReeshAmount() {
            @Override
            public void onClick(int title) {
                inventoryAmount.setText(title + "");
            }
        });

        fragments.add(oneFragment);
        fragments.add(twoFragment);
        fragments.add(threeFragment);
//        }
        //mTabLayout.setTabMode(TabLayout.SCROLL_AXIS_HORIZONTAL);//设置tab模式,当前为系统默认模式
        for (int i = 0; i < listTitles.size(); i++) {
            mTabLayout.addTab(mTabLayout.newTab().setText(listTitles.get(i)));//添加tab选项
        }

        FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return fragments.get(position);
            }

            @Override
            public int getCount() {
                return fragments.size();
            }

            //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text
            @Override
            public CharSequence getPageTitle(int position) {
                return listTitles.get(position);
            }
        };
        mViewPager.setAdapter(mAdapter);

        mTabLayout.setupWithViewPager(mViewPager);//将TabLayout和ViewPager关联起来。
        mTabLayout.setTabsFromPagerAdapter(mAdapter);//给Tabs设置适配器

    }

}

Fragment:

public class OneFragment extends Fragment {
    private View view;//定义view用来设置fragment的layout
    public RecyclerView mCollectRecyclerView;//定义RecyclerView
    //定义以goodsentity实体类为对象的数据集合
    private List<data_new> goodsEntityList = new ArrayList<data_new>();
    //自定义recyclerveiw的适配器
    private OneAdapter mCollectRecyclerAdapter;
    //獲取shuju
    private List<data_new> data_news;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //获取fragment的layout
        view = inflater.inflate(R.layout.fragment_one, container, false);
        //初始化数据
        initData();
        //对recycleview进行配置
        initRecyclerView();
        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            goodsEntityList = DBManager.getInstance(getActivity()).queryUserList();

            //TODO now it's visible to user
            //查询数据更新下面的总数目 接口回调
            if (onReeshAmount != null) { //触发
                onReeshAmount.onClick(goodsEntityList.size());
            }
        } else {

        }
    }

    /**
     * fragment静态传值
     */
    public static OneFragment newInstance(String str) {
        OneFragment fragment = new OneFragment();
//        Bundle bundle = new Bundle();
//        bundle.putString(KEY,str);
//        fragment.setArguments(bundle);
        return fragment;
    }

    /**
     * TODO 模拟数据
     */
    private void initData() {
        goodsEntityList = DBManager.getInstance(getActivity()).queryUserList();
    }

    /**
     * TODO 对recycleview进行配置
     */

    private void initRecyclerView() {
        //获取RecyclerView
        mCollectRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        //创建adapter
        mCollectRecyclerAdapter = new OneAdapter(getActivity(), goodsEntityList);
        //给RecyclerView设置adapter
        mCollectRecyclerView.setAdapter(mCollectRecyclerAdapter);
        //设置layoutManager,可以设置显示效果,是线性布局、grid布局,还是瀑布流布局
        //参数是:上下文、列表方向(横向还是纵向)、是否倒叙
        mCollectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
        //设置item的分割线
        mCollectRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));
        //RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义
        mCollectRecyclerAdapter.setOnItemClickListener(new OneAdapter.OnItemClickListener() {
            @Override
            public void OnItemClick(View view, data_new data) {
                //此处进行监听事件的业务处理
                Toast.makeText(getActivity(), "我是item", Toast.LENGTH_SHORT).show();
            }
        });
    }
   //定义变量
    private OnReeshAmount onReeshAmount; 
//定义触发方法
    public void setOnReeshAmount(OnReeshAmount onReeshAmount) {
        this.onReeshAmount = onReeshAmount;
    }

    /**
     * 当title被点击时,将title传递出去
     */
    //定义接口
    public interface OnReeshAmount {

        void onClick(int title);
    }
    
}

相关文章:

  • kotlin 基础语法
  • Kotlin 基本数据类型
  • Android写入文件电脑上看不到的原因
  • DexArchiveMergerException,Could not resolve all files for configuration,Failed to resolve: com.githu
  • StringUtils在commons-lang3和commons-lang中的区别,下载commons-lang3.jar包
  • android.os.NetworkOnMainThreadException
  • 编译release版,报错:the apk for your currently selected variant(app-release-unsigned.apk)is not signed.
  • Kotlin 条件控制
  • Debugview(VC调试工具)是一款电脑查错调试软件,该工具是程序员调试必备,能在运行程序后将错误提示完整记录在日志文本中,以供直接查看,进行故障修复,快下载使用吧!
  • Android解决读取txt文件中文乱码问题,reload和cnvert区别,按行读取txt文件,按 |进行字符串分割
  • 实用Android框架
  • git merge  gitk git入门
  • arm架构和x86架构区别
  • 怎样新建jniLibs, RTLD_LAZY) failed: dlopen failed: /data/app/com.itep.mt.dispatch-is too small to be an
  • Dart语言基础
  • [译] 怎样写一个基础的编译器
  • 03Go 类型总结
  • 77. Combinations
  • ECS应用管理最佳实践
  • Fastjson的基本使用方法大全
  • Fundebug计费标准解释:事件数是如何定义的?
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Invalidate和postInvalidate的区别
  • jquery cookie
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • learning koa2.x
  • MQ框架的比较
  • PaddlePaddle-GitHub的正确打开姿势
  • Spring框架之我见(三)——IOC、AOP
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue2.x学习三:事件处理生命周期钩子
  • Zepto.js源码学习之二
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 百度小程序遇到的问题
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关于extract.autodesk.io的一些说明
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 蓝海存储开关机注意事项总结
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端面试之CSS3新特性
  • 深度学习在携程攻略社区的应用
  • 使用common-codec进行md5加密
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 一份游戏开发学习路线
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • Mac 上flink的安装与启动
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #前后端分离# 头条发布系统
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (4)STL算法之比较
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (NSDate) 时间 (time )比较