diff --git a/app/build.gradle b/app/build.gradle index 5714ac9..48d8a4d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,6 +66,14 @@ dependencies { //eventbus传递信息 implementation("org.greenrobot:eventbus:3.3.1") +// glide图片加载 + implementation 'com.github.bumptech.glide:glide:4.11.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + + implementation "androidx.cardview:cardview:1.0.0" + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d846309..4b8b102 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,8 @@ + + { + private ArrayList goodArrayList; + private Context context; + + public GoodsAdapter(ArrayList goodArrayList,Context context) { + this.goodArrayList = goodArrayList; + this.context = context; + Log.e("goodsAdapter","GoodsAdapter"); + } + + @NonNull + @Override + public GoodsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.goods_show_item,parent,false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull GoodsAdapter.ViewHolder holder, int position) { + String strTvTitle; + String strTvCount; + String imageUrl; + + if (goodArrayList.get(position) != null){ + strTvTitle = goodArrayList.get(position).getContent(); + strTvCount = goodArrayList.get(position).getPrice().toString(); + imageUrl = (String) goodArrayList.get(position).getImageUrlList().get(0); + Log.e("imageUrl", (String) goodArrayList.get(position).getImageUrlList().get(0)); + holder.getTvTitle().setText(strTvTitle); + holder.getTvCount().setText(strTvCount); + + Glide.with(context) + .load(imageUrl) + .into(holder.getIvGoods()); + } + } + + @Override + public int getItemCount() { + if (goodArrayList != null) + return goodArrayList.size(); + + return 0; + } + + public class ViewHolder extends RecyclerView.ViewHolder { + private ImageView ivGoods; + private TextView tvTitle; + private TextView tvCount; + public ViewHolder(@NonNull View itemView) { + super(itemView); + ivGoods = itemView.findViewById(R.id.iv_goods); + tvTitle = itemView.findViewById(R.id.tv_title); + tvCount = itemView.findViewById(R.id.tv_count); + } + + public ImageView getIvGoods() { + return ivGoods; + } + + public TextView getTvTitle() { + return tvTitle; + } + + + public TextView getTvCount() { + return tvCount; + } + } +} 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 d99f278..b116c25 100644 --- a/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java +++ b/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java @@ -3,6 +3,9 @@ package com.android.activity.fragment; import android.os.Bundle; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.os.Parcelable; import android.util.Log; @@ -12,6 +15,7 @@ import android.view.ViewGroup; import android.widget.TextView; import com.android.R; +import com.android.activity.adapter.GoodsAdapter; import com.android.bean.Good; import com.android.utils.eventBus.EventMsg; @@ -34,11 +38,15 @@ public class GoodsTypeFragment extends Fragment { // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_TEXT = "param1"; private static final String ARG_GOODS = "goodsTypeList"; + private ArrayList goodArrayList; private EventMsg eventMsg; + private ArrayList typeGoodList; + private RecyclerView recyclerView; + private GoodsAdapter goodsAdapter; View rootView; - private String mParam1; + private Integer mParam1; public GoodsTypeFragment() { // Required empty public constructor @@ -46,11 +54,11 @@ public class GoodsTypeFragment extends Fragment { // TODO: Rename and change types and number of parameters - public static GoodsTypeFragment newInstance(String param1,List goodsList) { + public static GoodsTypeFragment newInstance(Integer param1,List goodsList) { GoodsTypeFragment fragment = new GoodsTypeFragment(); Bundle args = new Bundle(); - args.putString(ARG_TEXT, param1); - args.putParcelableArrayList(ARG_GOODS, (ArrayList) goodsList); + args.putInt(ARG_TEXT, param1); + args.putSerializable(ARG_GOODS, (Serializable) goodsList); fragment.setArguments(args); return fragment; } @@ -58,9 +66,17 @@ public class GoodsTypeFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - //注册事件 if (getArguments() != null) { - mParam1 = getArguments().getString(ARG_TEXT); + mParam1 = getArguments().getInt(ARG_TEXT); + goodArrayList = (ArrayList) getArguments().getSerializable(ARG_GOODS); + } + if(goodArrayList != null) { + typeGoodList = new ArrayList<>(); + for (int j = 0; j < goodArrayList.size(); j++) { + if(goodArrayList.get(j).getTypeId() == mParam1){ + typeGoodList.add(goodArrayList.get(j)); + } + } } } @@ -68,18 +84,36 @@ public class GoodsTypeFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - - if(rootView == null) rootView = inflater.inflate(R.layout.fragment_goods_type, container, false); + //recycle必须在 + + initView(); return rootView; } + private void initView() { + + recyclerView = rootView.findViewById(R.id.rl_goods_show); + if (goodArrayList != null){ + goodsAdapter = new GoodsAdapter(typeGoodList,getContext()); + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + recyclerView.setAdapter(goodsAdapter); + } + +// TextView view = rootView.findViewById(R.id.tv_goods); +// view.setText(goodArrayList.get(1).getUsername()); + + } + @Override public void onStart() { + EventBus.getDefault().register(this); super.onStart(); + + } @Override @@ -99,9 +133,8 @@ public class GoodsTypeFragment extends Fragment { @Subscribe(sticky = true,threadMode = ThreadMode.MAIN) public void onReceiveMsg(EventMsg eventMsg){ this.eventMsg = eventMsg; - TextView view = rootView.findViewById(R.id.tv_goods); - view.setText(eventMsg.getMsg()); - Log.e("111111111",eventMsg.getMsg()); +// TextView view = rootView.findViewById(R.id.tv_goods); +// view.setText(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 b07af75..b9f8afb 100644 --- a/app/src/main/java/com/android/activity/fragment/HomePageFragment.java +++ b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java @@ -3,9 +3,12 @@ package com.android.activity.fragment; import android.content.Context; import android.os.Bundle; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.viewpager2.widget.ViewPager2; +import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -40,7 +43,6 @@ public class HomePageFragment extends Fragment implements View.OnClickListener, private GoodsModelimpl goodsModelimpl; private List goodsTypeList; private List goodList; - private List typeGoodList; private View rootView; private GoodsTypeFSAdapter goodsTypeFSAdapter; @@ -51,6 +53,7 @@ public class HomePageFragment extends Fragment implements View.OnClickListener, public HomePageFragment() { // Required empty public constructor + } @@ -68,52 +71,47 @@ public class HomePageFragment extends Fragment implements View.OnClickListener, rootView = inflater.inflate(R.layout.fragment_home_page, container, false); - Log.e("1","onCreateView"); initGoodsTypeData(); return rootView; } private void initGoodsTypeData() { goodsModelimpl = new GoodsModelimpl(); - goodsModelimpl.getAllGoodsType(this); goodsModelimpl.getAllGood(this); + goodsModelimpl.getAllGoodsType(this); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + initRecyclerview(); + } + },2000); - } + } //获取商品类型成功回调 @Override public void onGetAllGoodsType(ResponseData> responseData) { this.goodsTypeList = responseData.getData(); - this.goodsTypeList.add(new GoodsType(0,"全部")); - - initRecyclerview(); - - } //获取商品成功回调 @Override public void onGetAllGoodSuccess(ResponseData responseData) { this.goodList = responseData.getData().getRecords(); - + Log.e("goodList",goodList.get(1).getUsername()); } private void initRecyclerview() { viewPager = rootView.findViewById(R.id.view_pager); - - ArrayList fragments = new ArrayList<>(); for (int i = 0; i < goodsTypeList.size(); i++) { -// 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)); + + fragments.add(GoodsTypeFragment.newInstance(goodsTypeList.get(i).getId(), goodList)); + //EventBus发布消息 // EventBus.getDefault().postSticky(new EventMsg<>(goodsTypeList.get(i).getType(),200,goodList)); diff --git a/app/src/main/java/com/android/bean/Good.java b/app/src/main/java/com/android/bean/Good.java index a5d5924..292a6ab 100644 --- a/app/src/main/java/com/android/bean/Good.java +++ b/app/src/main/java/com/android/bean/Good.java @@ -8,7 +8,7 @@ import java.util.ArrayList; import java.util.List; -public class Good implements Parcelable { +public class Good implements Serializable { private String addr; private String appKey; @@ -19,7 +19,7 @@ public class Good implements Parcelable { private Long createTime; private Long id; private Long imageCode; - private ArrayList imageUrlList; + private List imageUrlList; private Integer price; private Integer status; private Long tUserId; @@ -27,6 +27,67 @@ public class Good implements Parcelable { private Integer typeId; private List array; + protected Good(Parcel in) { + addr = in.readString(); + appKey = in.readString(); + avatar = in.readString(); + content = in.readString(); + username = in.readString(); + typeName = in.readString(); + if (in.readByte() == 0) { + createTime = null; + } else { + createTime = in.readLong(); + } + if (in.readByte() == 0) { + id = null; + } else { + id = in.readLong(); + } + if (in.readByte() == 0) { + imageCode = null; + } else { + imageCode = in.readLong(); + } + if (in.readByte() == 0) { + price = null; + } else { + price = in.readInt(); + } + if (in.readByte() == 0) { + status = null; + } else { + status = in.readInt(); + } + if (in.readByte() == 0) { + tUserId = null; + } else { + tUserId = in.readLong(); + } + if (in.readByte() == 0) { + tuserId = null; + } else { + tuserId = in.readLong(); + } + if (in.readByte() == 0) { + typeId = null; + } else { + typeId = in.readInt(); + } + } + +// public static final Creator CREATOR = new Creator() { +// @Override +// public Good createFromParcel(Parcel in) { +// return new Good(in); +// } +// +// @Override +// public Good[] newArray(int size) { +// return new Good[size]; +// } +// }; + public String getAddr() { return addr; } @@ -99,7 +160,7 @@ public class Good implements Parcelable { this.imageCode = imageCode; } - public ArrayList getImageUrlList() { + public List getImageUrlList() { return imageUrlList; } @@ -155,14 +216,30 @@ public class Good implements Parcelable { this.array = array; } - @Override - public int describeContents() { - - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - - } +// @Override +// public int describeContents() { +// +// return 0; +// } +// +// @Override +// public void writeToParcel(Parcel dest, int flags) { +// dest.writeString(addr); +// dest.writeString(appKey); +// dest.writeString(avatar); +// dest.writeString(content); +// dest.writeString(username); +// dest.writeString(typeName); +// dest.writeLong(createTime); +// dest.writeLong(id); +// dest.writeLong(imageCode); +// dest.writeList(imageUrlList); +// dest.writeInt(price); +// dest.writeInt(status); +// dest.writeLong(tUserId); +// dest.writeLong(tuserId); +// dest.writeInt(typeId); +// dest.writeList(array); +// +// } } 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 b6a4734..644cd8e 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 @@ -17,13 +17,13 @@ import retrofit2.http.QueryMap; public interface GoodsHttp_interface { @GET("tran/goods/type") - @Headers({"appId:b34ac21286ae45938add627b418a4871", - "appSecret:67526def9de11d4a64f5e80e60ed3372eea69"}) + @Headers({"appId:e843562fefa144bf808a9621b107b3a4", + "appSecret:76387a99d8b52fad54b94bea1118262573381"}) Observable>> sendGetAllGoodsType(); @GET("tran/goods/all") - @Headers({"appId:b34ac21286ae45938add627b418a4871", - "appSecret:67526def9de11d4a64f5e80e60ed3372eea69"}) + @Headers({"appId:e843562fefa144bf808a9621b107b3a4", + "appSecret:76387a99d8b52fad54b94bea1118262573381"}) Observable> sendGetAllGood(@Query("userId") Integer userId, @QueryMap Map map ); 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 870caae..773eb63 100644 --- a/app/src/main/java/com/android/model/goods/GoodsModelimpl.java +++ b/app/src/main/java/com/android/model/goods/GoodsModelimpl.java @@ -78,7 +78,7 @@ public class GoodsModelimpl implements GoodsModel{ Map map = new ArrayMap<>(); Observable> observable - = httpInterface.sendGetAllGood(6, map); + = httpInterface.sendGetAllGood(17, map); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/com/android/utils/constraint/LoginConstraint.java b/app/src/main/java/com/android/utils/constraint/LoginConstraint.java new file mode 100644 index 0000000..c5edc01 --- /dev/null +++ b/app/src/main/java/com/android/utils/constraint/LoginConstraint.java @@ -0,0 +1,7 @@ +package com.android.utils.constraint; + +public class LoginConstraint { + public static final String AppId_VALUE = "appId:b34ac21286ae45938add627b418a4871"; + public static final String AppSecret_VALUE = "appId:b34ac21286ae45938add627b418a4871"; + public static final String BASE_URL = "http://47.107.52.7:88/member/"; +} diff --git a/app/src/main/res/drawable/add_shopping_cart_24.xml b/app/src/main/res/drawable/add_shopping_cart_24.xml new file mode 100644 index 0000000..2f8406c --- /dev/null +++ b/app/src/main/res/drawable/add_shopping_cart_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/goods.jpg b/app/src/main/res/drawable/goods.jpg new file mode 100644 index 0000000..ba7aeeb Binary files /dev/null and b/app/src/main/res/drawable/goods.jpg differ diff --git a/app/src/main/res/drawable/op.jpg b/app/src/main/res/drawable/op.jpg new file mode 100644 index 0000000..8f89068 Binary files /dev/null and b/app/src/main/res/drawable/op.jpg differ diff --git a/app/src/main/res/layout/fragment_goods_type.xml b/app/src/main/res/layout/fragment_goods_type.xml index 9ffaea8..1efbcf5 100644 --- a/app/src/main/res/layout/fragment_goods_type.xml +++ b/app/src/main/res/layout/fragment_goods_type.xml @@ -5,13 +5,9 @@ android:layout_height="match_parent" tools:context=".activity.fragment.GoodsTypeFragment"> - - + android:layout_height="wrap_content"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml index 3b28447..8c60fd9 100644 --- a/app/src/main/res/layout/fragment_home_page.xml +++ b/app/src/main/res/layout/fragment_home_page.xml @@ -6,20 +6,27 @@ android:layout_height="match_parent" tools:context=".activity.fragment.HomePageFragment"> - + - + /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/goods_show_item.xml b/app/src/main/res/layout/goods_show_item.xml new file mode 100644 index 0000000..90be38e --- /dev/null +++ b/app/src/main/res/layout/goods_show_item.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file