分类展示fragment

BaseActivity 抽取Activity

public abstract class BaseActivity

extends AppCompatActivity implements IContract.IView {
public P p;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(initLayout());
    p = initPresenter();
    if (p!=null){
        p.onAttach(this);
    }
    initView();
    initData();
}

protected abstract P initPresenter();

protected abstract void initData();

protected abstract void initView();

protected abstract int initLayout();

@Override
protected void onDestroy() {
    super.onDestroy();
    if (p!=null){
        p.onunAttach();
        p = null;
    }
}

}

BaseP 抽取P

public abstract class BasePresenter implements IContract.IPresenter {
public V v;
public void onAttach(V v){
this.v = v;
}
public void onunAttach(){
if (v!=null){
v=null;
}
}
}

BaseFragment 抽取F

public abstract class BaseFragment extends Fragment implements IContract.IView {
public F f;
private View view;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(initLayout(), container, false);
    return view;
}

@Override
public void onStart() {
    super.onStart();
    f = initFragment();
    f.Attach(this);
    initView(view);
    initData();
}


protected abstract void initView(View view);

protected abstract void initData();

protected abstract F initFragment();

protected abstract int initLayout();

@Override
public void onDestroy() {
    super.onDestroy();
    if (f!=null){
        f.Uttach();
        f=null;
    }
}

BasePresenterFragment

public abstract class BasePresenterFragment implements IContract.IPresenter {
public V v;
//绑定方法
public void Attach(V v){
this.v=v;
}
//解绑方法
public void Uttach(){
if (v!=null){
v=null;
}
}
}

MyApp

public class MyApp extends Application {
public static Context context;

@Override
public void onCreate() {
    super.onCreate();
    context =this;
}

}

ApiService## 标题

public interface ApiService {
@GET
Observable getInfoNoParams(@Url String url);
@GET
Observable getInfoParams(@Url String url, @QueryMap Map<String,Object> map);
@POST
Observable postInfoParams(@Url String url,@QueryMap Map<String,Object> map);
}

MyUrls

public interface MyUrls {
String BASEURL = “http://172.17.8.100/small/”;
//分类
String SHOPPING_ITEM = “commodity/v1/findCategory”;
//登录
String LOGER= “user/v1/login”;
}
*

IContract

public interface IContract {
public interface MyCallBack{
void onSuccess(T t);
void onError(String err);
}
interface IModel{
void getInfo(String url, Class cls, MyCallBack myCallBack);
void getInfoParams(String url,Class cls,Map map,MyCallBack callBack);
void postInfoParams(String url,Class cls,Map map,MyCallBack myCallBack);
}
interface IView{
void onSuccess(T t);
void onError(String error);
}
interface IPresenter{
void getInfo(String url,Class cls);
void getInfoParams(String url,Class cls,Map map);
void postInfoParams(String url,Class cls,Map map);
}
}

网络哟工具

public class MyUtil {

private final ApiService apiService;

private MyUtil(){
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .addInterceptor(interceptor)
            .addInterceptor(new Interceptor() {
                @NotNull
                @Override
                public Response intercept(@NotNull Chain chain) throws IOException {
                    SharedPreferences lzw = MyApp.context.getSharedPreferences("lzw", Context.MODE_PRIVATE);
                    String userId = lzw.getString("userId", "");
                    String sessionId = lzw.getString("sessionId", "");
                    if (TextUtils.isEmpty(userId) || TextUtils.isEmpty(sessionId)) {
                        return chain.proceed(chain.request());
                    } else {
                        Request request = chain.request().newBuilder()
                                .addHeader("userId", "")
                                .addHeader("sessionId", "")
                                .build();
                        return chain.proceed(request);
                    }
                }
            }).build();
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(MyUrls.BASEURL)
            .client(okHttpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    apiService = retrofit.create(ApiService.class);
}
private static class UtilHodler{
    private static MyUtil myUtil = new MyUtil();
}

public static MyUtil getInstance() {
    return UtilHodler.myUtil;
}
public void getInfo(String url, final Class cls, final MyCallBack myCallBack){
    apiService.getInfoNoParams(url).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<ResponseBody>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ResponseBody responseBody) {
                    Gson gson = new Gson();
                    try {
                        Object o = gson.fromJson(responseBody.string(), cls);
                        if (myCallBack!=null){
                            myCallBack.onSuccess(o);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void onError(Throwable e) {
                    myCallBack.onError(e.getMessage());
                }

                @Override
                public void onComplete() {

                }
            });
}
public void getInfoParams(String url, final Class cls, Map<String,Object> map, final MyCallBack myCallBack){
    apiService.postInfoParams(url,map).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<ResponseBody>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ResponseBody responseBody) {
                    Gson gson = new Gson();
                    try {
                        Object object = gson.fromJson(responseBody.string(), cls);
                        if (myCallBack!=null){
                            myCallBack.onSuccess(object);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();

                    }
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });
}
public void postInfoParams(String url, final Class cls, Map map, final MyCallBack myCallBack){
    apiService.postInfoParams(url,map).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<ResponseBody>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ResponseBody responseBody) {
                    Gson gson = new Gson();
                    try {
                        Object object = gson.fromJson(responseBody.string(), cls);
                        if (myCallBack!=null){
                            myCallBack.onSuccess(object);
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });
}
public interface MyCallBack<T>{
    void onSuccess(T t);
    void onError(String err);
}

}

MyModel

public class MyModel implements IContract.IModel {

@Override
public void getInfo(String url, Class cls, final IContract.MyCallBack myCallBack) {
    MyUtil.getInstance().getInfo(url, cls, new MyUtil.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            myCallBack.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            myCallBack.onError(err);
        }
    });
}

@Override
public void getInfoParams(String url, Class cls, Map map, final IContract.MyCallBack myCallBack) {
    MyUtil.getInstance().getInfoParams(url, cls, map, new MyUtil.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            myCallBack.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            myCallBack.onError(err);
        }
    });
}

@Override
public void postInfoParams(String url, Class cls, Map map, final IContract.MyCallBack myCallBack) {
    MyUtil.getInstance().postInfoParams(url, cls, map, new MyUtil.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            myCallBack.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            myCallBack.onError(err);
        }
    });
}

}

MyPresenter

public class MyPresenter extends BasePresenter {
MyModel myModel = new MyModel();
@Override
public void getInfo(String url, Class cls) {
myModel.getInfo(url, cls, new IContract.MyCallBack() {
@Override
public void onSuccess(Object o) {
v.onSuccess(o);
}

        @Override
        public void onError(String err) {
            v.onError(err);
        }
    });
}

@Override
public void getInfoParams(String url, Class cls, Map map) {
    myModel.getInfoParams(url, cls, map, new IContract.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            v.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            v.onError(err);
        }
    });
}

@Override
public void postInfoParams(String url, Class cls, Map map) {
    myModel.postInfoParams(url, cls, map, new IContract.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            v.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            v.onError(err);
        }
    });
}

}

MyPresenterFragment

public class MyPresenterFragment extends BasePresenterFragment {
MyModel myModel = new MyModel();
@Override
public void getInfo(String url, Class cls) {
myModel.getInfo(url, cls, new IContract.MyCallBack() {
@Override
public void onSuccess(Object o) {
v.onSuccess(o);
}

        @Override
        public void onError(String err) {
            v.onError(err);
        }
    });
}

@Override
public void getInfoParams(String url, Class cls, Map map) {
    myModel.getInfoParams(url, cls, map, new IContract.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            v.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            v.onError(err);
        }
    });
}

@Override
public void postInfoParams(String url, Class cls, Map map) {
    myModel.postInfoParams(url, cls, map, new IContract.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            v.onSuccess(o);
        }

        @Override
        public void onError(String err) {
            v.onError(err);
        }
    });
}

}

Main

public class MainActivity extends BaseActivity {

private MyPresenter myPresenter;
private ViewPager view_pager;
private TabLayout tab_layout;
List<String> slist = new ArrayList<>();
List<Fragment> flist = new ArrayList<>();
private ShouFragment shouFragment;
private DengFragment dengFragment;

@Override
protected BasePresenter initPresenter() {
    myPresenter = new MyPresenter();
    return myPresenter;
}

@Override
protected void initData() {
    slist.add("首页");
    slist.add("登录");
    shouFragment = new ShouFragment();
    dengFragment = new DengFragment();
    flist.add(shouFragment);
    flist.add(dengFragment);

    view_pager.setAdapter(new FragmentAdapter(getSupportFragmentManager(),slist,flist));
    tab_layout.setupWithViewPager(view_pager);
}

@Override
protected void initView() {
    view_pager = findViewById(R.id.view_pager);
    tab_layout = findViewById(R.id.tab_layout);
}

@Override
protected int initLayout() {
    return R.layout.activity_main;
}

@Override
public void onSuccess(Object o) {

}

@Override
public void onError(String error) {

}

}

FragmentAdapter

public class FragmentAdapter extends FragmentPagerAdapter {
List slist;
List flist;

public FragmentAdapter(FragmentManager fm, List<String> slist, List<Fragment> flist) {
    super(fm);
    this.slist = slist;
    this.flist = flist;
}

@Override
public Fragment getItem(int i) {
    return flist.get(i);
}

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

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return slist.get(position);

}

}

首页展示Fragment

public class ShouFragment extends BaseFragment {

private RecyclerView one_Ji_Recy;
private RecyclerView Two_Ji_Recy;
private MyPresenterFragment myPresenterFragment;
List<MyBean.ResultBean> mOneList= new ArrayList<>();
List<MyBean.ResultBean.SecondCategoryVoBean> mTwoList = new ArrayList<>();
private MyAdapter myAdapter;
private Twoadapter twoadapter;

@Override
protected void initView(View view) {
    one_Ji_Recy = view.findViewById(R.id.one_Ji_Recy);
    one_Ji_Recy.setLayoutManager(new LinearLayoutManager(getContext()));
    Two_Ji_Recy = view.findViewById(R.id.Two_Ji_Recy);
    Two_Ji_Recy.setLayoutManager(new GridLayoutManager(getContext(),2));
}

@Override
protected void initData() {
    myPresenterFragment.getInfo(MyUrls.SHOPPING_ITEM, MyBean.class);
    myAdapter = new MyAdapter(mOneList, getContext());
    one_Ji_Recy.setAdapter(myAdapter);
    twoadapter = new Twoadapter(mTwoList, getContext());
    Two_Ji_Recy.setAdapter(twoadapter);
    myAdapter.setItemClick(new MyAdapter.ItemClick() {
        @Override
        public void setIndex(int position) {
            myAdapter.setColorPosition(position);
            mTwoList.clear();
            mTwoList.addAll(mOneList.get(position).getSecondCategoryVo());
            twoadapter.notifyDataSetChanged();
        }
    });
}

@Override
protected BasePresenterFragment initFragment() {
    myPresenterFragment = new MyPresenterFragment();
    return myPresenterFragment;
}

@Override
protected int initLayout() {
    return R.layout.shou_layout;
}

@Override
public void onSuccess(Object o) {
    if (o instanceof MyBean){
        mOneList.addAll(((MyBean) o).getResult());
        myAdapter.notifyDataSetChanged();
        mTwoList.addAll(mOneList.get(0).getSecondCategoryVo());
        twoadapter.notifyDataSetChanged();
    }
}

@Override
public void onError(String error) {

}

}

oneAdapter

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Hodel> {
List<MyBean.ResultBean> mOneList;
Context mContext;
int mColorPosition = 0;
public MyAdapter(List<MyBean.ResultBean> mOneList, Context mContext) {
this.mOneList = mOneList;
this.mContext = mContext;
}

@NonNull
@Override
public Hodel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = View.inflate(mContext,R.layout.item_one_ji,null);
    Hodel hodel = new Hodel(view);
    return hodel;
}

@Override
public void onBindViewHolder(@NonNull Hodel hodel, final int i) {
    hodel.mTv.setText(mOneList.get(i).getName()+"");
    if (mColorPosition==i){
        hodel.mTv.setTextColor(Color.RED);
    }else {
        hodel.mTv.setTextColor(Color.BLACK);
    }
    hodel.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (click!=null){
                click.setIndex(i);
            }
        }
    });
}

@Override
public int getItemCount() {
    return mOneList.size();
}

class Hodel extends RecyclerView.ViewHolder {
    private TextView mTv;
    public Hodel(@NonNull View itemView) {
        super(itemView);
        mTv = itemView.findViewById(R.id.One_Text);
    }
}
public interface ItemClick{
    void setIndex(int position);
}
private ItemClick click;
public void setItemClick(ItemClick click){
    this.click = click;
}
public void setColorPosition(int position){
    this.mColorPosition = position;
    notifyDataSetChanged();
}

}

TwoAdapter

public class Twoadapter extends RecyclerView.Adapter<Twoadapter.Holder> {
List<MyBean.ResultBean.SecondCategoryVoBean> TwoList;
Context mContext;

public Twoadapter(List<MyBean.ResultBean.SecondCategoryVoBean> twoList, Context mContext) {
    TwoList = twoList;
    this.mContext = mContext;
}

@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = View.inflate(mContext,R.layout.item_two_ji,null);
    Holder holder = new Holder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull Holder holder, int i) {
    holder.mTv.setText(TwoList.get(i).getName()+"");
    holder.mTv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

}

@Override
public int getItemCount() {
    return TwoList.size();
}

class Holder extends RecyclerView.ViewHolder {
    TextView mTv;
    public Holder(@NonNull View itemView) {
        super(itemView);
        mTv = itemView.findViewById(R.id.Two_Text);
    }
}

}

登录Fragment

public class DengFragment extends BaseFragment {

@BindView(R.id.deng)
TextView deng;
Unbinder unbinder;
private MyPresenterFragment myPresenterFragment;

@Override
protected void initView(View view) {

}

@Override
protected void initData() {

}

@Override
protected BasePresenterFragment initFragment() {
    myPresenterFragment = new MyPresenterFragment();
    return myPresenterFragment;
}

@Override
protected int initLayout() {
    return R.layout.deng_layout;
}

@Override
public void onSuccess(Object o) {

}

@Override
public void onError(String error) {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // TODO: inflate a fragment view
    View rootView = super.onCreateView(inflater, container, savedInstanceState);
    unbinder = ButterKnife.bind(this, rootView);
    return rootView;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
}

@OnClick(R.id.deng)
public void onClick() {
    Intent intent = new Intent(getContext(), Main2Activity.class);
    startActivity(intent);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值