前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >通过Interface:fragment向activity传值

通过Interface:fragment向activity传值

作者头像
zhangjiqun
发布2024-12-16 16:31:14
发布2024-12-16 16:31:14
6700
代码可运行
举报
文章被收录于专栏:计算机工具计算机工具
运行总次数:0
代码可运行

2019.5.21,在fzsd

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

activity:
代码语言:javascript
代码运行次数:0
复制
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:
代码语言:javascript
代码运行次数:0
复制
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);
    }
    
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • activity:
  • Fragment:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档