共用fragment共用adapter

本文介绍了一种在Android应用中复用Fragment和Adapter的方法,通过传递类型参数和上下文来构建不同形态的Fragment,并利用Adapter加载不同类型的item布局。

共用fragment可以在所使用的fragment里成员变量private int TYPE;
Context context;
生成构造方法public Fragment_ticket(int TYPE, Context context) {
this.TYPE = TYPE;
this.context = context;
}
就可以在activity里通过new Fragment_ticket(1, this);时 传入定义的类型和this(上下文),构建不同的fragment,添加到集合,然后设置给自定义的FragmentPagerAdapter 。
共用adapter,是同样的道理,设置成员变量即要加载的item布局是哪个,private int ITEM_TYPE ; 生成构造方法,在getView方法里判断加载哪种item布局,if(view==null){
//可以使用 1 不可用 0 过期 2
if(ITEM_TYPE==1){
view = mInflater.inflate(R.layout.item_ticket_canuse,viewGroup,false);
vh = new ViewHolder();
vh.tMoney = (TextView) view.findViewById(R.id.item_ticket_money);
vh.tType = (TextView) view.findViewById(R.id.item_ticket_type);
vh.tRange = (TextView) view.findViewById(R.id.item_ticket_range_tv);
vh.tExpiryDate = (TextView) view.findViewById(R.id.item_ticket_expirdDate_tv);
}else if(ITEM_TYPE==0||ITEM_TYPE==2){ .......}
即ITEM_TYPE==1时加载购物券可以使用的布局,ITEM_TYPE==0时加载不可使用的布局,布局的背景图片不同,布局不同。


–>路要一步一步走,记住自己走过的路,不再犯同样的错误,才是真正的成长!欢迎指点、交流。<–

package com.weishitechsub.kdcxqwb.fragment.remind; import android.widget.Toast; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.hfd.common.base.BaseFragment; import com.weishitechsub.kdcxqwb.R; import com.weishitechsub.kdcxqwb.bean.ListBean; import com.weishitechsub.kdcxqwb.fragment.Adapter.MyCourierAdapter; import com.weishitechsub.kdcxqwb.fragment.Adapter.RemindListAdapter; import com.weishitechsub.kdcxqwb.fragment.home.MyCourierActivity; import java.util.List; public class RemindFragment extends BaseFragment { private RecyclerView rv; private RemindListAdapter adapter; private MyCourierAdapter mainAdapter; // 假设你能拿到主列表的 adapter @Override protected int setLayout() { return R.layout.fragment_remind; } @Override protected void initView() { rv = fvbi(R.id.rv); rv.setLayoutManager(new LinearLayoutManager(getContext())); adapter = new RemindListAdapter(getContext()); rv.setAdapter(adapter); } @Override protected void initData() { // 关键:你需要把主页面的 adapter 实例传递进来 // 方法一:通过 Activity 共享 MyCourierActivity activity = (MyCourierActivity) getActivity(); mainAdapter = activity.getMainCourierAdapter(); // 需要在 MainActivity 暴露 getter refreshRemindedList(); } @Override public void onResume() { super.onResume(); refreshRemindedList(); // 每次进入刷新一次 } private void refreshRemindedList() { if (mainAdapter != null) { List<ListBean> remindedList = mainAdapter.getRemindedItems(); adapter.setNewInstance(remindedList); if (remindedList.isEmpty()) { Toast.makeText(getContext(), "暂无提醒中的快递", Toast.LENGTH_SHORT).show(); } } } @Override protected void initClick() { // 可加下拉刷新等 } } com.weishitechsub.kdcxqwb.MainActivity cannot be cast to com.weishitechsub.kdcxqwb.fragment.home.MyCourierActivity
最新发布
11-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值