diff --git a/app/build.gradle b/app/build.gradle index de700b6..5714ac9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -63,6 +63,9 @@ dependencies { //fragment implementation "androidx.fragment:fragment:$fragment_version" + //eventbus传递信息 + implementation("org.greenrobot:eventbus:3.3.1") + diff --git a/app/src/main/java/com/android/activity/HomePageActivity.java b/app/src/main/java/com/android/activity/HomePageActivity.java index 23c558a..97aa188 100644 --- a/app/src/main/java/com/android/activity/HomePageActivity.java +++ b/app/src/main/java/com/android/activity/HomePageActivity.java @@ -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(); + } } \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/adapter/GoodsTypeAdapter.java b/app/src/main/java/com/android/activity/adapter/GoodsTypeAdapter.java deleted file mode 100644 index 77498ef..0000000 --- a/app/src/main/java/com/android/activity/adapter/GoodsTypeAdapter.java +++ /dev/null @@ -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 { - private List goodsTypeList; - private Context context; - private int resourceId; - private ViewHolder holder; - - public GoodsTypeAdapter(List 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); - } - } -} diff --git a/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java b/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java index 6e4aba8..9f22778 100644 --- a/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java +++ b/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java @@ -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; diff --git a/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java b/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java index f44a227..d99f278 100644 --- a/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java +++ b/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java @@ -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 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 goodsList) { GoodsTypeFragment fragment = new GoodsTypeFragment(); Bundle args = new Bundle(); args.putString(ARG_TEXT, param1); + args.putParcelableArrayList(ARG_GOODS, (ArrayList) 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()); } + } \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/fragment/HomePageFragment.java b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java index bfc9e62..b07af75 100644 --- a/app/src/main/java/com/android/activity/fragment/HomePageFragment.java +++ b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java @@ -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 goodsTypeList; -// private GoodsTypeAdapter goodsTypeAdapter = null; -// private RecyclerView recyclerView; + private List goodList; + private List 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> responseData) { this.goodsTypeList = responseData.getData(); @@ -93,23 +94,34 @@ public class HomePageFragment extends Fragment implements View.OnClickListener, } + //获取商品成功回调 + @Override + public void onGetAllGoodSuccess(ResponseData 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 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(); diff --git a/app/src/main/java/com/android/bean/Goods.java b/app/src/main/java/com/android/bean/Good.java similarity index 67% rename from app/src/main/java/com/android/bean/Goods.java rename to app/src/main/java/com/android/bean/Good.java index 1d68518..a5d5924 100644 --- a/app/src/main/java/com/android/bean/Goods.java +++ b/app/src/main/java/com/android/bean/Good.java @@ -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) { + + } } diff --git a/app/src/main/java/com/android/bean/GoodRecords.java b/app/src/main/java/com/android/bean/GoodRecords.java new file mode 100644 index 0000000..deaa15f --- /dev/null +++ b/app/src/main/java/com/android/bean/GoodRecords.java @@ -0,0 +1,45 @@ +package com.android.bean; + +import java.io.Serializable; +import java.util.List; + +//返回商品类,包括当前页 +public class GoodRecords implements Serializable { + private List records; + private Integer current; + private Integer size; + private Integer total; + + + public List getRecords() { + return records; + } + + public void setRecords(List 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; + } +} diff --git a/app/src/main/java/com/android/bean/GoodsType.java b/app/src/main/java/com/android/bean/GoodsType.java index 5d6260e..b2c3523 100644 --- a/app/src/main/java/com/android/bean/GoodsType.java +++ b/app/src/main/java/com/android/bean/GoodsType.java @@ -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; diff --git a/app/src/main/java/com/android/bean/ResponseData.java b/app/src/main/java/com/android/bean/ResponseData.java index ded6c98..d4f6e56 100644 --- a/app/src/main/java/com/android/bean/ResponseData.java +++ b/app/src/main/java/com/android/bean/ResponseData.java @@ -1,6 +1,8 @@ package com.android.bean; -public class ResponseData { +import java.io.Serializable; + +public class ResponseData implements Serializable { private int code; private String msg; private T data; diff --git a/app/src/main/java/com/android/bean/User.java b/app/src/main/java/com/android/bean/User.java index c84f7e7..8df9335 100644 --- a/app/src/main/java/com/android/bean/User.java +++ b/app/src/main/java/com/android/bean/User.java @@ -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; diff --git a/app/src/main/java/com/android/bean/queryBean/GoodQuery.java b/app/src/main/java/com/android/bean/queryBean/GoodQuery.java new file mode 100644 index 0000000..fc5246b --- /dev/null +++ b/app/src/main/java/com/android/bean/queryBean/GoodQuery.java @@ -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; +} diff --git a/app/src/main/java/com/android/model/goods/GoodsHttp_interface.java b/app/src/main/java/com/android/model/goods/GoodsHttp_interface.java index 9ab3c18..b6a4734 100644 --- a/app/src/main/java/com/android/model/goods/GoodsHttp_interface.java +++ b/app/src/main/java/com/android/model/goods/GoodsHttp_interface.java @@ -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>> sendGetAllGoodsType(); + @GET("tran/goods/all") + @Headers({"appId:b34ac21286ae45938add627b418a4871", + "appSecret:67526def9de11d4a64f5e80e60ed3372eea69"}) + Observable> sendGetAllGood(@Query("userId") Integer userId, + @QueryMap Map map + ); + + + + } diff --git a/app/src/main/java/com/android/model/goods/GoodsListener.java b/app/src/main/java/com/android/model/goods/GoodsListener.java index 5e3ff31..f1e3cba 100644 --- a/app/src/main/java/com/android/model/goods/GoodsListener.java +++ b/app/src/main/java/com/android/model/goods/GoodsListener.java @@ -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> responseData); + void onGetAllGoodSuccess(ResponseData responseData); } diff --git a/app/src/main/java/com/android/model/goods/GoodsModel.java b/app/src/main/java/com/android/model/goods/GoodsModel.java index 7a92b1c..1109967 100644 --- a/app/src/main/java/com/android/model/goods/GoodsModel.java +++ b/app/src/main/java/com/android/model/goods/GoodsModel.java @@ -4,5 +4,6 @@ import com.android.model.login.LoginListener; public interface GoodsModel { void getAllGoodsType(GoodsListener goodsListener); + void getAllGood(GoodsListener goodsListener); } diff --git a/app/src/main/java/com/android/model/goods/GoodsModelimpl.java b/app/src/main/java/com/android/model/goods/GoodsModelimpl.java index 849edc2..870caae 100644 --- a/app/src/main/java/com/android/model/goods/GoodsModelimpl.java +++ b/app/src/main/java/com/android/model/goods/GoodsModelimpl.java @@ -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 map = new ArrayMap<>(); + + Observable> observable + = httpInterface.sendGetAllGood(6, map); + + observable.subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull ResponseData 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() { + + } + }); + + } + + } diff --git a/app/src/main/java/com/android/utils/eventBus/EventMsg.java b/app/src/main/java/com/android/utils/eventBus/EventMsg.java new file mode 100644 index 0000000..72de536 --- /dev/null +++ b/app/src/main/java/com/android/utils/eventBus/EventMsg.java @@ -0,0 +1,41 @@ +package com.android.utils.eventBus; + +import com.android.bean.Good; + +import java.util.List; + +public class EventMsg { + 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; + } +} diff --git a/app/src/main/res/layout/fragment_goods_type.xml b/app/src/main/res/layout/fragment_goods_type.xml index 51df399..9ffaea8 100644 --- a/app/src/main/res/layout/fragment_goods_type.xml +++ b/app/src/main/res/layout/fragment_goods_type.xml @@ -9,6 +9,8 @@ diff --git a/app/src/main/res/layout/list_good_stype_item.xml b/app/src/main/res/layout/list_good_stype_item.xml deleted file mode 100644 index 0864eb2..0000000 --- a/app/src/main/res/layout/list_good_stype_item.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - \ No newline at end of file