数据传输

master
fangshicai 3 years ago
parent 06fe27021b
commit de53e6db38

@ -63,6 +63,9 @@ dependencies {
//fragment
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.NavigationView;
import org.greenrobot.eventbus.EventBus;
public class HomePageActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener{
private BottomNavigationView navigation;
@ -34,6 +36,7 @@ public class HomePageActivity extends AppCompatActivity implements BottomNavigat
navigation = findViewById(R.id.bottom_navigation);
navigation.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED);
navigation.setSelectedItemId(R.id.item_home);
//首次加载到home活动
//开始碎片事务
fragmentTransaction =
@ -75,4 +78,10 @@ public class HomePageActivity extends AppCompatActivity implements BottomNavigat
}
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 com.android.activity.fragment.GoodsTypeFragment;
import com.android.bean.Goods;
import com.android.bean.Good;
import com.android.bean.GoodsType;
import java.util.List;

@ -4,12 +4,24 @@ import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.os.Parcelable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
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.
@ -21,28 +33,24 @@ public class GoodsTypeFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_TEXT = "param1";
private static final String ARG_GOODS = "goodsTypeList";
private EventMsg<Good> eventMsg;
View rootView;
// TODO: Rename and change types of parameters
private String mParam1;
public GoodsTypeFragment() {
// 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
public static GoodsTypeFragment newInstance(String param1) {
public static GoodsTypeFragment newInstance(String param1,List<Good> goodsList) {
GoodsTypeFragment fragment = new GoodsTypeFragment();
Bundle args = new Bundle();
args.putString(ARG_TEXT, param1);
args.putParcelableArrayList(ARG_GOODS, (ArrayList<? extends Parcelable>) goodsList);
fragment.setArguments(args);
return fragment;
}
@ -50,6 +58,7 @@ public class GoodsTypeFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//注册事件
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_TEXT);
}
@ -58,16 +67,41 @@ public class GoodsTypeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
if(rootView == null)
rootView = inflater.inflate(R.layout.fragment_goods_type, container, false);
initView();
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);
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.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import com.android.R;
import com.android.activity.adapter.GoodsTypeAdapter;
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.ResponseData;
import com.android.model.goods.GoodsListener;
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.TabLayoutMediator;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
@ -39,8 +39,8 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
private Button button;
private GoodsModelimpl goodsModelimpl;
private List<GoodsType> goodsTypeList;
// private GoodsTypeAdapter goodsTypeAdapter = null;
// private RecyclerView recyclerView;
private List<Good> goodList;
private List<Good> typeGoodList;
private View rootView;
private GoodsTypeFSAdapter goodsTypeFSAdapter;
@ -59,11 +59,7 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
super.onCreate(savedInstanceState);
}
private void initGoodsTypeData() {
goodsModelimpl = new GoodsModelimpl();
goodsModelimpl.getAllGoodsType(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -74,15 +70,20 @@ public class HomePageFragment extends Fragment implements View.OnClickListener,
container, false);
Log.e("1","onCreateView");
initGoodsTypeData();
return rootView;
}
private void initGoodsTypeData() {
goodsModelimpl = new GoodsModelimpl();
goodsModelimpl.getAllGoodsType(this);
goodsModelimpl.getAllGood(this);
return rootView;
}
//获取商品类型成功回调
@Override
public void onGetAllGoodsType(ResponseData<List<GoodsType>> responseData) {
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() {
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<>();
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);
viewPager.setAdapter(goodsTypeFSAdapter);
//把TabLayout选项卡布局和ViewPager2绑定在一起。特别说明一下下面这行代码是官方给的特别好使。
//把TabLayout选项卡布局和ViewPager2绑定在一起。特别说明一下下面这行代码是官方给的特别好使。
TabLayout tablayout = rootView.findViewById(R.id.tabLayout);
new TabLayoutMediator(tablayout, viewPager,
(tab, position) -> tab.setText(goodsTypeList.get(position).getType())).attach();

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

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

@ -2,6 +2,7 @@ package com.android.bean;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.Objects;
import lombok.AllArgsConstructor;
@ -9,7 +10,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
public class User {
public class User implements Serializable {
@SerializedName("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;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType;
import com.android.bean.ResponseData;
import java.util.List;
import java.util.Map;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
public interface GoodsHttp_interface {
@GET("tran/goods/type")
@ -15,6 +21,16 @@ public interface GoodsHttp_interface {
"appSecret:67526def9de11d4a64f5e80e60ed3372eea69"})
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;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType;
import com.android.bean.ResponseData;
import com.android.bean.User;
@ -8,4 +10,5 @@ import java.util.List;
public interface GoodsListener {
void onGetAllGoodsType(ResponseData<List<GoodsType>> responseData);
void onGetAllGoodSuccess(ResponseData<GoodRecords> responseData);
}

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

@ -1,12 +1,16 @@
package com.android.model.goods;
import android.util.ArrayMap;
import android.util.Log;
import com.android.bean.Good;
import com.android.bean.GoodRecords;
import com.android.bean.GoodsType;
import com.android.bean.ResponseData;
import com.android.model.login.LoginListener;
import java.util.List;
import java.util.Map;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
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
android:id="@+id/tv_goods"
android:layout_width="match_parent"
android:gravity="center"
android:textSize="32sp"
android:layout_height="match_parent"
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