XML布局
<?xml version="1.0" encoding="utf-8"?>
<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">
<FrameLayout
android:id="@+id/frag"
android:layout_weight="9"
android:layout_width="match_parent"
android:layout_height="0dp"></FrameLayout>
<RadioGroup
android:id="@+id/group"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal">
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="首页"
android:id="@+id/but1"
android:button="@null"
android:gravity="center"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/but2"
android:button="@null"
android:gravity="center"
android:text="分类"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/but3"
android:button="@null"
android:gravity="center"
android:text="发现"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/but4"
android:button="@null"
android:gravity="center"
android:text="购物车"
android:layout_weight="1"/>
<RadioButton
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/but5"
android:button="@null"
android:gravity="center"
android:text="我的"
android:layout_weight="1"/>
</RadioGroup>
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity {
private FrameLayout frag;
private RadioGroup group;
private FragmentA fragmentA;
private FragmentB fragmentB;
private FragmentC fragmentC;
private FragmentD fragmentD;
private FragmentE fragmentE;
private FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//个推
// com.getui.demo.DemoPushService 为第三方自定义推送服务
PushManager.getInstance().initialize(this.getApplicationContext(), DemoPushService.class);
// com.getui.demo.DemoIntentService 为第三方自定义的推送服务事件接收类
PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), DemoIntentService.class);
//找到控件
frag = findViewById(R.id.frag);
group = findViewById(R.id.group);
fragmentA = new FragmentA();
fragmentB = new FragmentB();
fragmentC = new FragmentC();
fragmentD = new FragmentD();
fragmentE = new FragmentE();
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.frag,fragmentA);
fragmentTransaction.add(R.id.frag,fragmentB);
fragmentTransaction.add(R.id.frag,fragmentC);
fragmentTransaction.add(R.id.frag,fragmentD);
fragmentTransaction.add(R.id.frag,fragmentE);
fragmentTransaction.show(fragmentA).hide(fragmentB).hide(fragmentC).hide(fragmentD).hide(fragmentE).commit();
group.check(group.getChildAt(0).getId());
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
FragmentTransaction fragmentTransaction1 = getSupportFragmentManager().beginTransaction();
switch (checkedId){
case R.id.but1:
fragmentTransaction1.show(fragmentA).hide(fragmentB).hide(fragmentC).hide(fragmentD).hide(fragmentE);
break;
case R.id.but2:
fragmentTransaction1.show(fragmentB).hide(fragmentA).hide(fragmentC).hide(fragmentD).hide(fragmentE);
break;
case R.id.but3:
fragmentTransaction1.show(fragmentC).hide(fragmentB).hide(fragmentA).hide(fragmentD).hide(fragmentE);
break;
case R.id.but4:
fragmentTransaction1.show(fragmentD).hide(fragmentB).hide(fragmentA).hide(fragmentC).hide(fragmentE);
break;
case R.id.but5:
fragmentTransaction1.show(fragmentE).hide(fragmentB).hide(fragmentA).hide(fragmentD).hide(fragmentC);
break;
}
fragmentTransaction1.commit();
}
});
}
}
model
public class ClaModel implements IClaContance.IClaModel {
private String key,value;
@Override
public void clalist(HashMap<String, String> params, final IClaModelCallBack callBack) {
OkHttpUtils.getInstance().doGet(Api.Left, new OkHttpCallBack() {
@Override
public void success(String result) {
callBack.success(result);
}
@Override
public void error(String msg) {
callBack.error(msg);
}
});
}
@Override
public void claRightlist(HashMap<String, String> params, final IClaModelCallBack callBack) {
for (Map.Entry<String,String>map:params.entrySet()){
key=map.getKey();
value=map.getValue();
}
String s = Api.right + value;
OkHttpUtils.getInstance().doGet(s, new OkHttpCallBack() {
@Override
public void success(String result) {
callBack.success(result);
}
@Override
public void error(String msg) {
callBack.error(msg);
}
});
}
public interface IClaModelCallBack{
void success(String result);
void error(String msg);
}
}
接口Contance
public interface IClaContance {
abstract class IClaPresenter{
public abstract void clalist(HashMap<String,String>params);
public abstract void claRightlist(HashMap<String,String>params);
}
interface IClaModel{
void clalist(HashMap<String,String>params, ClaModel.IClaModelCallBack callBack);
void claRightlist(HashMap<String,String>params, ClaModel.IClaModelCallBack callBack);
}
interface IClaView{
void success(String result);
void error(String msg);
void Rightsuccess(String result);
void Righterror(String msg);
}
}
presenter
public class ClaPresenter extends IClaContance.IClaPresenter {
private IClaContance.IClaView iClaView;
private ClaModel claModel;
public ClaPresenter(IClaContance.IClaView iClaView) {
this.iClaView = iClaView;
claModel = new ClaModel();
}
@Override
public void clalist(HashMap<String, String> params) {
claModel.clalist(params, new ClaModel.IClaModelCallBack() {
@Override
public void success(String result) {
iClaView.success(result);
}
@Override
public void error(String msg) {
iClaView.error(msg);
}
});
}
@Override
public void claRightlist(HashMap<String, String> params) {
claModel.claRightlist(params, new ClaModel.IClaModelCallBack() {
@Override
public void success(String result) {
iClaView.Rightsuccess(result);
}
@Override
public void error(String msg) {
iClaView.Righterror(msg);
}
});
}
}
OkHttpCallBack
public interface OkHttpCallBack {
void success(String result);
void error(String msg);
}
OkHttpUtils
public class OkHttpUtils {
private OkHttpClient okHttpClient;
private static OkHttpUtils mInstance;
private Handler handler = new Handler();
//单例模式
public static OkHttpUtils getInstance(){
if (mInstance==null){
synchronized (OkHttpUtils.class){
if (mInstance==null){
mInstance = new OkHttpUtils();
}
}
}
return mInstance;
}
//拦截器
private OkHttpUtils(){
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.connectTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.writeTimeout(5,TimeUnit.SECONDS)
.build();
}
//doGet
public void doGet(String url,final OkHttpCallBack callBack){
Request build = new Request.Builder().url(url).get().build();
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
callBack.error("网络异常");
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.code()==200){
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.success(string);
}
});
}
}
});
}
}
Api
public class Api {
public static String Left = "http://172.17.8.100/small/commodity/v1/findFirstCategory";
public static String right= "http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=";
}
leftadapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Myvh> {
private Context context;
private List<UserBean.ResultBean>list;
public MyAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setList(List<UserBean.ResultBean> list) {
this.list = list;
notifyDataSetChanged();
}
@NonNull
@Override
public Myvh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.left,parent,false);
return new Myvh(view);
}
@Override
public void onBindViewHolder(@NonNull Myvh holder, final int position) {
holder.title.setText(list.get(position).name);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onclicklisener!=null){
onclicklisener.click(list.get(position).name.substring(0,2));
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class Myvh extends RecyclerView.ViewHolder {
private final TextView title;
public Myvh(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
}
}
private onclicklisener onclicklisener;
public void setOnclicklisener(MyAdapter.onclicklisener onclicklisener) {
this.onclicklisener = onclicklisener;
}
public interface onclicklisener{
void click(String cid);
}
}
rightadapter
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.Myvh> {
private Context context;
private List<RightBean.Bean>list;
public RightAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setList(List<RightBean.Bean> list) {
this.list = list;
notifyDataSetChanged();
}
@NonNull
@Override
public Myvh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.right,parent,false);
return new Myvh(view);
}
@Override
public void onBindViewHolder(@NonNull Myvh holder, int position) {
holder.title.setText(list.get(position).commodityName);
Glide.with(context).load(list.get(position).masterPic).into(holder.imageView);
}
@Override
public int getItemCount() {
return list.size();
}
public class Myvh extends RecyclerView.ViewHolder {
private final ImageView imageView;
private final TextView title;
public Myvh(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image);
title = itemView.findViewById(R.id.title);
}
}
}
leftbean
public class UserBean {
public List<ResultBean> result;
public static class ResultBean {
public String id;
public String name;
}
}
rightbean
public class RightBean {
public List<Bean>result;
public static class Bean{
public String commodityName;
public String masterPic;
}
}
自定义View
public class Views extends LinearLayout {
public Button sao,sou;
public EditText edit;
public Views(Context context) {
super(context);
}
public Views(Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.line,this);
sao = view.findViewById(R.id.sao);
edit = view.findViewById(R.id.edit);
sou = view.findViewById(R.id.sou);
}
public Views(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
fragmentA
public class FragmentA extends Fragment implements IClaContance.IClaView,MyAdapter.onclicklisener {
private Button sao;
private Views ss;
private RecyclerView mLeftRv;
private RecyclerView mRightRv;
private MyAdapter myAdapter;
private RightAdapter rightAdapter;
private ClaPresenter claPresenter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1,container,false);
sao = view.findViewById(R.id.sao);
ss = view.findViewById(R.id.ss);
//得到列表id
mRightRv = view.findViewById(R.id.right_rv);
mLeftRv = view.findViewById(R.id.left_rv);
mLeftRv.setLayoutManager(new LinearLayoutManager(getActivity()));
mRightRv.setLayoutManager(new GridLayoutManager(getActivity(),2));
myAdapter = new MyAdapter(getActivity());
rightAdapter = new RightAdapter(getActivity());
claPresenter = new ClaPresenter(this);
claPresenter.clalist(new HashMap<String, String>());
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("a","鞋");
claPresenter.claRightlist(hashMap);
ss.sou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = ss.edit.getText().toString();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("a",s);
claPresenter.claRightlist(hashMap);
}
});
//点击扫描二维码
ss.sao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
QRCodeManager.getInstance()
.with(getActivity())
.setReqeustType(1)
.scanningQRCode(new OnQRCodeScanCallback() {
@Override
public void onCompleted(String result) {
Toast.makeText(getActivity(), "结果:" + result, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable errorMsg) {
Toast.makeText(getActivity(), "扫描错误"+errorMsg.toString(),Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getActivity(), "扫描任务取消了", Toast.LENGTH_SHORT).show();
}
});
}
});
return view;
}
@Override
public void success(String result) {
UserBean userBean = new Gson().fromJson(result,UserBean.class);
myAdapter.setList(userBean.result);
myAdapter.setOnclicklisener(this);
mLeftRv.setAdapter(myAdapter);
}
@Override
public void error(String msg) {
}
@Override
public void Rightsuccess(String result) {
RightBean rightBean = new Gson().fromJson(result,RightBean.class);
rightAdapter.setList(rightBean.result);
mRightRv.setAdapter(rightAdapter);
}
@Override
public void Righterror(String msg) {
}
@Override
public void click(String cid) {
getLeft(cid);
}
private void getLeft(String cid){
HashMap<String,String>params=new HashMap<>();
params.put("a",cid);
claPresenter.claRightlist(params);
}
}