数据传输

master
fangshicai 3 years ago
parent 06fe27021b
commit de53e6db38

@ -63,6 +63,9 @@ dependencies {
//fragment //fragment
implementation "androidx.fragment:fragment:$fragment_version" implementation "androidx.fragment:fragment:$fragment_version"
//eventbus
implementation("org.greenrobot:eventbus:3.3.1")

@ -18,6 +18,8 @@ import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView; import com.google.android.material.navigation.NavigationBarView;
import com.google.android.material.navigation.NavigationView; import com.google.android.material.navigation.NavigationView;
import org.greenrobot.eventbus.EventBus;
public class HomePageActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener{ public class HomePageActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener{
private BottomNavigationView navigation; private BottomNavigationView navigation;
@ -34,6 +36,7 @@ public class HomePageActivity extends AppCompatActivity implements BottomNavigat
navigation = findViewById(R.id.bottom_navigation); navigation = findViewById(R.id.bottom_navigation);
navigation.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED); navigation.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED);
navigation.setSelectedItemId(R.id.item_home); navigation.setSelectedItemId(R.id.item_home);
//首次加载到home活动 //首次加载到home活动
//开始碎片事务 //开始碎片事务
fragmentTransaction = fragmentTransaction =
@ -75,4 +78,10 @@ public class HomePageActivity extends AppCompatActivity implements BottomNavigat
} }
return true; return true;
} }
@Override
protected void onDestroy() {
super.onDestroy();
}
} }

@ -1,61 +0,0 @@
package com.android.activity.adapter;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.android.R;
import com.android.bean.GoodsType;
import java.util.List;
public class GoodsTypeAdapter extends RecyclerView.Adapter<GoodsTypeAdapter.ViewHolder> {
private List<GoodsType> goodsTypeList;
private Context context;
private int resourceId;
private ViewHolder holder;
public GoodsTypeAdapter(List<GoodsType> goodsTypeList, Context context,int resourceId) {
this.goodsTypeList = goodsTypeList;
this.context = context;
this.resourceId = resourceId;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context)
.inflate(resourceId,parent,false);
holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
GoodsType goodsType = goodsTypeList.get(position);
Log.d("1",goodsType.getType());
holder.textView.setText(goodsType.getType());
}
@Override
public int getItemCount() {
return goodsTypeList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv_goods_type_item);
}
}
}

@ -9,7 +9,7 @@ import androidx.lifecycle.Lifecycle;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.android.activity.fragment.GoodsTypeFragment; import com.android.activity.fragment.GoodsTypeFragment;
import com.android.bean.Goods; import com.android.bean.Good;
import com.android.bean.GoodsType; import com.android.bean.GoodsType;
import java.util.List; import java.util.List;

@ -4,12 +4,24 @@ import android.os.Bundle;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import android.os.Parcelable;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import com.android.R; import com.android.R;
import com.android.bean.Good;
import com.android.utils.eventBus.EventMsg;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/** /**
* A simple {@link Fragment} subclass. * A simple {@link Fragment} subclass.
@ -21,28 +33,24 @@ public class GoodsTypeFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match // TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_TEXT = "param1"; private static final String ARG_TEXT = "param1";
private static final String ARG_GOODS = "goodsTypeList";
private EventMsg<Good> eventMsg;
View rootView; View rootView;
// TODO: Rename and change types of parameters
private String mParam1; private String mParam1;
public GoodsTypeFragment() { public GoodsTypeFragment() {
// Required empty public constructor // Required empty public constructor
} }
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @return A new instance of fragment GoodsTypeFragment.
*/
// TODO: Rename and change types and number of parameters // TODO: Rename and change types and number of parameters
public static GoodsTypeFragment newInstance(String param1) { public static GoodsTypeFragment newInstance(String param1,List<Good> goodsList) {
GoodsTypeFragment fragment = new GoodsTypeFragment(); GoodsTypeFragment fragment = new GoodsTypeFragment();
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(ARG_TEXT, param1); args.putString(ARG_TEXT, param1);
args.putParcelableArrayList(ARG_GOODS, (ArrayList<? extends Parcelable>) goodsList);
fragment.setArguments(args); fragment.setArguments(args);
return fragment; return fragment;
} }
@ -50,6 +58,7 @@ public class GoodsTypeFragment extends Fragment {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
//注册事件
if (getArguments() != null) { if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_TEXT); mParam1 = getArguments().getString(ARG_TEXT);
} }
@ -58,16 +67,41 @@ public class GoodsTypeFragment extends Fragment {
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
// Inflate the layout for this fragment
if(rootView == null) if(rootView == null)
rootView = inflater.inflate(R.layout.fragment_goods_type, container, false); rootView = inflater.inflate(R.layout.fragment_goods_type, container, false);
initView();
return rootView; return rootView;
}
@Override
public void onStart() {
EventBus.getDefault().register(this);
super.onStart();
} }
private void initView() { @Override
public void onStop() {
super.onStop();
//EventBus解注册
EventBus.getDefault().unregister(this);
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
public void onReceiveMsg(EventMsg eventMsg){
this.eventMsg = eventMsg;
TextView view = rootView.findViewById(R.id.tv_goods); TextView view = rootView.findViewById(R.id.tv_goods);
view.setText(mParam1); view.setText(eventMsg.getMsg());
Log.e("111111111",eventMsg.getMsg());
} }
} }

@ -3,29 +3,29 @@ package com.android.activity.fragment;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.Button;
import com.android.R; import com.android.R;
import com.android.activity.adapter.GoodsTypeAdapter;
import com.android.activity.adapter.GoodsTypeFSAdapter; import com.android.activity.adapter.GoodsTypeFSAdapter;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType; import com.android.bean.GoodsType;
import com.android.bean.ResponseData; import com.android.bean.ResponseData;
import com.android.model.goods.GoodsListener; import com.android.model.goods.GoodsListener;
import com.android.model.goods.GoodsModelimpl; import com.android.model.goods.GoodsModelimpl;
import com.android.utils.eventBus.EventMsg;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayoutMediator;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -39,8 +39,8 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
private Button button; private Button button;
private GoodsModelimpl goodsModelimpl; private GoodsModelimpl goodsModelimpl;
private List<GoodsType> goodsTypeList; private List<GoodsType> goodsTypeList;
// private GoodsTypeAdapter goodsTypeAdapter = null; private List<Good> goodList;
// private RecyclerView recyclerView; private List<Good> typeGoodList;
private View rootView; private View rootView;
private GoodsTypeFSAdapter goodsTypeFSAdapter; private GoodsTypeFSAdapter goodsTypeFSAdapter;
@ -59,11 +59,7 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
private void initGoodsTypeData() {
goodsModelimpl = new GoodsModelimpl();
goodsModelimpl.getAllGoodsType(this);
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -74,15 +70,20 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
container, false); container, false);
Log.e("1","onCreateView"); Log.e("1","onCreateView");
initGoodsTypeData(); initGoodsTypeData();
return rootView;
}
private void initGoodsTypeData() {
goodsModelimpl = new GoodsModelimpl();
goodsModelimpl.getAllGoodsType(this);
goodsModelimpl.getAllGood(this);
return rootView;
} }
//获取商品类型成功回调
@Override @Override
public void onGetAllGoodsType(ResponseData<List<GoodsType>> responseData) { public void onGetAllGoodsType(ResponseData<List<GoodsType>> responseData) {
this.goodsTypeList = responseData.getData(); this.goodsTypeList = responseData.getData();
@ -93,23 +94,34 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
} }
//获取商品成功回调
@Override
public void onGetAllGoodSuccess(ResponseData<GoodRecords> responseData) {
this.goodList = responseData.getData().getRecords();
}
private void initRecyclerview() { private void initRecyclerview() {
viewPager = rootView.findViewById(R.id.view_pager); viewPager = rootView.findViewById(R.id.view_pager);
// goodsTypeAdapter = new GoodsTypeAdapter(goodsTypeList,context,R.layout.list_good_stype_item);
// viewPager.setAdapter(goodsTypeAdapter);
ArrayList<Fragment> fragments = new ArrayList<>(); ArrayList<Fragment> fragments = new ArrayList<>();
for (int i = 0; i < goodsTypeList.size(); i++) { for (int i = 0; i < goodsTypeList.size(); i++) {
fragments.add(GoodsTypeFragment.newInstance(goodsTypeList.get(i).getType()));
}
// for (int j = 0; j < goodList.size(); j++) {
// if(goodList.get(i).getTypeId() == goodsTypeList.get(i).getId()){
// typeGoodList.add(goodList.get(i));
// }
// }
fragments.add(GoodsTypeFragment.newInstance(goodsTypeList.get(i).getType(), goodList));
//EventBus发布消息
// EventBus.getDefault().postSticky(new EventMsg<>(goodsTypeList.get(i).getType(),200,goodList));
}
goodsTypeFSAdapter = new GoodsTypeFSAdapter(getActivity().getSupportFragmentManager(), getLifecycle(),fragments); goodsTypeFSAdapter = new GoodsTypeFSAdapter(getActivity().getSupportFragmentManager(), getLifecycle(),fragments);
viewPager.setAdapter(goodsTypeFSAdapter); viewPager.setAdapter(goodsTypeFSAdapter);
//把TabLayout选项卡布局和ViewPager2绑定在一起。特别说明一下下面这行代码是官方给的特别好使。 //把TabLayout选项卡布局和ViewPager2绑定在一起。特别说明一下下面这行代码是官方给的特别好使。
TabLayout tablayout = rootView.findViewById(R.id.tabLayout); TabLayout tablayout = rootView.findViewById(R.id.tabLayout);
new TabLayoutMediator(tablayout, viewPager, new TabLayoutMediator(tablayout, viewPager,
(tab, position) -> tab.setText(goodsTypeList.get(position).getType())).attach(); (tab, position) -> tab.setText(goodsTypeList.get(position).getType())).attach();

@ -1,9 +1,14 @@
package com.android.bean; package com.android.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Goods { public class Good implements Parcelable {
private String addr; private String addr;
private String appKey; private String appKey;
@ -11,13 +16,14 @@ public class Goods {
private String content; private String content;
private String username; private String username;
private String typeName; private String typeName;
private Integer createTime; private Long createTime;
private Integer id; private Long id;
private Integer imageCode; private Long imageCode;
private ArrayList imageUrlList;
private Integer price; private Integer price;
private Integer status; private Integer status;
private Integer tUserId; private Long tUserId;
private Integer tuserId; private Long tuserId;
private Integer typeId; private Integer typeId;
private List array; private List array;
@ -69,30 +75,38 @@ public class Goods {
this.typeName = typeName; this.typeName = typeName;
} }
public Integer getCreateTime() { public Long getCreateTime() {
return createTime; return createTime;
} }
public void setCreateTime(Integer createTime) { public void setCreateTime(Long createTime) {
this.createTime = createTime; this.createTime = createTime;
} }
public Integer getId() { public Long getId() {
return id; return id;
} }
public void setId(Integer id) { public void setId(Long id) {
this.id = id; this.id = id;
} }
public Integer getImageCode() { public Long getImageCode() {
return imageCode; return imageCode;
} }
public void setImageCode(Integer imageCode) { public void setImageCode(Long imageCode) {
this.imageCode = imageCode; this.imageCode = imageCode;
} }
public ArrayList getImageUrlList() {
return imageUrlList;
}
public void setImageUrlList(ArrayList imageUrlList) {
this.imageUrlList = imageUrlList;
}
public Integer getPrice() { public Integer getPrice() {
return price; return price;
} }
@ -109,19 +123,19 @@ public class Goods {
this.status = status; this.status = status;
} }
public Integer gettUserId() { public Long gettUserId() {
return tUserId; return tUserId;
} }
public void settUserId(Integer tUserId) { public void settUserId(Long tUserId) {
this.tUserId = tUserId; this.tUserId = tUserId;
} }
public Integer getTuserId() { public Long getTuserId() {
return tuserId; return tuserId;
} }
public void setTuserId(Integer tuserId) { public void setTuserId(Long tuserId) {
this.tuserId = tuserId; this.tuserId = tuserId;
} }
@ -140,4 +154,15 @@ public class Goods {
public void setArray(List array) { public void setArray(List array) {
this.array = array; this.array = array;
} }
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
} }

@ -0,0 +1,45 @@
package com.android.bean;
import java.io.Serializable;
import java.util.List;
//返回商品类,包括当前页
public class GoodRecords implements Serializable {
private List<Good> records;
private Integer current;
private Integer size;
private Integer total;
public List<Good> getRecords() {
return records;
}
public void setRecords(List<Good> records) {
this.records = records;
}
public Integer getCurrent() {
return current;
}
public void setCurrent(Integer current) {
this.current = current;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
this.size = size;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
}

@ -1,6 +1,8 @@
package com.android.bean; package com.android.bean;
public class GoodsType { import java.io.Serializable;
public class GoodsType implements Serializable {
private Integer id; private Integer id;
private String type; private String type;

@ -1,6 +1,8 @@
package com.android.bean; package com.android.bean;
public class ResponseData<T> { import java.io.Serializable;
public class ResponseData<T> implements Serializable {
private int code; private int code;
private String msg; private String msg;
private T data; private T data;

@ -2,6 +2,7 @@ package com.android.bean;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -9,7 +10,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
public class User { public class User implements Serializable {
@SerializedName("id") @SerializedName("id")
private Integer id; private Integer id;

@ -0,0 +1,12 @@
package com.android.bean.queryBean;
import org.jetbrains.annotations.NotNull;
public class GoodQuery {
private Integer current;
private String keyword;
private Integer size;
private Integer typeId;
@NotNull
private Integer userId;
}

@ -1,13 +1,19 @@
package com.android.model.goods; package com.android.model.goods;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType; import com.android.bean.GoodsType;
import com.android.bean.ResponseData; import com.android.bean.ResponseData;
import java.util.List; import java.util.List;
import java.util.Map;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET; import retrofit2.http.GET;
import retrofit2.http.Headers; import retrofit2.http.Headers;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
public interface GoodsHttp_interface { public interface GoodsHttp_interface {
@GET("tran/goods/type") @GET("tran/goods/type")
@ -15,6 +21,16 @@ public interface GoodsHttp_interface {
"appSecret:67526def9de11d4a64f5e80e60ed3372eea69"}) "appSecret:67526def9de11d4a64f5e80e60ed3372eea69"})
Observable<ResponseData<List<GoodsType>>> sendGetAllGoodsType(); Observable<ResponseData<List<GoodsType>>> sendGetAllGoodsType();
@GET("tran/goods/all")
@Headers({"appId:b34ac21286ae45938add627b418a4871",
"appSecret:67526def9de11d4a64f5e80e60ed3372eea69"})
Observable<ResponseData<GoodRecords>> sendGetAllGood(@Query("userId") Integer userId,
@QueryMap Map<String, Object> map
);
} }

@ -1,5 +1,7 @@
package com.android.model.goods; package com.android.model.goods;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType; import com.android.bean.GoodsType;
import com.android.bean.ResponseData; import com.android.bean.ResponseData;
import com.android.bean.User; import com.android.bean.User;
@ -8,4 +10,5 @@ import java.util.List;
public interface GoodsListener { public interface GoodsListener {
void onGetAllGoodsType(ResponseData<List<GoodsType>> responseData); void onGetAllGoodsType(ResponseData<List<GoodsType>> responseData);
void onGetAllGoodSuccess(ResponseData<GoodRecords> responseData);
} }

@ -4,5 +4,6 @@ import com.android.model.login.LoginListener;
public interface GoodsModel { public interface GoodsModel {
void getAllGoodsType(GoodsListener goodsListener); void getAllGoodsType(GoodsListener goodsListener);
void getAllGood(GoodsListener goodsListener);
} }

@ -1,12 +1,16 @@
package com.android.model.goods; package com.android.model.goods;
import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType; import com.android.bean.GoodsType;
import com.android.bean.ResponseData; import com.android.bean.ResponseData;
import com.android.model.login.LoginListener; import com.android.model.login.LoginListener;
import java.util.List; import java.util.List;
import java.util.Map;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.annotations.NonNull;
@ -61,4 +65,48 @@ public class GoodsModelimpl implements GoodsModel{
} }
}); });
} }
@Override
public void getAllGood(GoodsListener goodsListener) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://47.107.52.7:88/member/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build();
GoodsHttp_interface httpInterface =
retrofit.create(GoodsHttp_interface.class);
Map<String, Object> map = new ArrayMap<>();
Observable<ResponseData<GoodRecords>> observable
= httpInterface.sendGetAllGood(6, map);
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseData<GoodRecords>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull ResponseData<GoodRecords> listResponseData) {
goodsListener.onGetAllGoodSuccess(listResponseData);
Log.e("1111",listResponseData.getData().getRecords().get(1).getUsername());
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("1111",e.toString());
}
@Override
public void onComplete() {
}
});
}
} }

@ -0,0 +1,41 @@
package com.android.utils.eventBus;
import com.android.bean.Good;
import java.util.List;
public class EventMsg<T> {
private String msg;
private int status;
private T data;
public EventMsg(String msg, int status, T data) {
this.msg = msg;
this.status = status;
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}

@ -9,6 +9,8 @@
<TextView <TextView
android:id="@+id/tv_goods" android:id="@+id/tv_goods"
android:layout_width="match_parent" android:layout_width="match_parent"
android:gravity="center"
android:textSize="32sp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" /> android:text="@string/hello_blank_fragment" />

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_goods_type_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="商品"
/>
</LinearLayout>
Loading…
Cancel
Save