diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6b506a9..2284297 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -143,6 +143,21 @@
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
+
+
+
{
+
+ private MyProductAdapter adapter;
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityMyProductBinding.class;
+ }
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
+ .statusBarDarkFont(true).init();
+ }
+
+ @Override
+ protected void onQueryArguments() {
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.btnBack.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ protected void onFindView(Bundle savedInstanceState) {
+ binding.refreshRecycler.setLayoutManager(new LinearLayoutManager(mContext));
+ adapter = new MyProductAdapter();
+ binding.refreshRecycler.setAdapter(adapter);
+ binding.refreshRecycler.setEnableRefresh(false);
+ binding.refreshRecycler.setNoMoreData(true);
+ adapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
+ });
+ }
+
+ @Override
+ protected void onApplyData() {
+ requestData();
+ }
+
+ private void requestData() {
+ String dataStr = AppUtil.loadJsonFromRaw(mContext, R.raw.my_product);
+ Gson gson = new Gson();
+ List data = gson.fromJson(dataStr, new TypeToken>() {
+ }.getType());
+ adapter.setNewData(data);
+ binding.refreshRecycler.showContent();
+ }
+
+ private class MyProductAdapter extends BaseQuickAdapter {
+
+ public MyProductAdapter() {
+ super(R.layout.item_my_product);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder holder, MyProductEntity entity) {
+ holder.setImageResource(R.id.image, AppUtil.getDrawableId(entity.getImgRes()));
+ holder.setText(R.id.name, entity.getName());
+ holder.setText(R.id.status, entity.getStatus().equals("0") ? "已停售" : "在售中");
+ holder.setTextColor(R.id.status, getResColor(entity.getStatus().equals("0") ? R.color.color_txt_red : R.color.color_txt_green));
+ holder.setText(R.id.price, "¥" + entity.getPrice());
+ }
+ }
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandActivity.java
index 7926eb5..a416938 100644
--- a/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandActivity.java
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandActivity.java
@@ -3,6 +3,10 @@ package com.tairui.industrial_operation.ui.brand;
import com.gyf.immersionbar.ImmersionBar;
import com.tairui.industrial_operation.base.BaseActivity;
import com.tairui.industrial_operation.databinding.ActivityPublicBrandBinding;
+import com.tairui.industrial_operation.util.IntentUtil;
+import com.tairui.industrial_operation.util.SingleClickListener;
+
+import android.view.View;
public class PublicBrandActivity extends BaseActivity {
@Override
@@ -15,4 +19,20 @@ public class PublicBrandActivity extends BaseActivity {
+
+ private PublicBrandDynamicsAdapter adapter;
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityPublicBrandDynamicsBinding.class;
+ }
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar()
+ .statusBarDarkFont(true).init();
+ }
+
+ @Override
+ protected void onQueryArguments() {
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.btnBack.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ protected void onFindView(Bundle savedInstanceState) {
+ binding.refreshRecycler.setLayoutManager(new LinearLayoutManager(mContext));
+ adapter = new PublicBrandDynamicsAdapter();
+ binding.refreshRecycler.setAdapter(adapter);
+ binding.refreshRecycler.setEnableRefresh(false);
+ binding.refreshRecycler.setNoMoreData(true);
+ adapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
+ Bundle bundle = new Bundle();
+ bundle.putSerializable("data", adapter.getData().get(i));
+ IntentUtil.startActivity(mContext, PublicBrandDynamicsDetailActivity.class, bundle);
+ });
+ }
+
+ @Override
+ protected void onApplyData() {
+ requestData();
+ }
+
+ private void requestData() {
+ String dataStr = AppUtil.loadJsonFromRaw(mContext, R.raw.public_brand_dynamics);
+ Gson gson = new Gson();
+ List data = gson.fromJson(dataStr, new TypeToken>() {
+ }.getType());
+ adapter.setNewData(data);
+ binding.refreshRecycler.showContent();
+ }
+
+ private class PublicBrandDynamicsAdapter extends BaseQuickAdapter {
+
+ public PublicBrandDynamicsAdapter() {
+ super(R.layout.item_public_brand_dynamics);
+ }
+
+ @Override
+ protected void convert(@NonNull BaseViewHolder holder, PublicBrandDynamicsEntity entity) {
+ holder.setText(R.id.tvTitle, entity.getTitle());
+ holder.setText(R.id.tvContent, entity.getContent());
+ holder.setText(R.id.tvDate, entity.getDate());
+
+ }
+ }
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandDynamicsDetailActivity.java b/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandDynamicsDetailActivity.java
new file mode 100644
index 0000000..1d06fc8
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/brand/PublicBrandDynamicsDetailActivity.java
@@ -0,0 +1,48 @@
+package com.tairui.industrial_operation.ui.brand;
+
+import com.gyf.immersionbar.ImmersionBar;
+import com.tairui.industrial_operation.base.BaseActivity;
+import com.tairui.industrial_operation.databinding.ActivityPublicBrandDynamicsDetailBinding;
+import com.tairui.industrial_operation.ui.brand.entity.PublicBrandDynamicsEntity;
+import com.tairui.industrial_operation.util.SingleClickListener;
+
+import android.os.Bundle;
+import android.view.View;
+
+public class PublicBrandDynamicsDetailActivity extends BaseActivity {
+
+ private PublicBrandDynamicsEntity mData;
+
+ @Override
+ protected Class getBindingClass() {
+ return ActivityPublicBrandDynamicsDetailBinding.class;
+ }
+
+ @Override
+ protected void initStatusBar() {
+ ImmersionBar.with(this).fitsSystemWindows(false).transparentStatusBar().statusBarDarkFont(true).init();
+ }
+
+ @Override
+ protected void onQueryArguments() {
+ mData = (PublicBrandDynamicsEntity) getIntent().getSerializableExtra("data");
+ }
+
+ @Override
+ protected void onFindView(Bundle savedInstanceState) {
+ setText(binding.tvTitle, mData.getTitle());
+ setText(binding.tvDate, "发布日期:" + mData.getDate());
+ setText(binding.tvContent, mData.getContent());
+ }
+
+ @Override
+ protected void onBindListener() {
+ binding.btnBack.setOnClickListener(new SingleClickListener() {
+ @Override
+ protected void onSingleClick(View v) {
+ finish();
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/brand/entity/MyProductEntity.java b/app/src/main/java/com/tairui/industrial_operation/ui/brand/entity/MyProductEntity.java
new file mode 100644
index 0000000..112980d
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/brand/entity/MyProductEntity.java
@@ -0,0 +1,46 @@
+package com.tairui.industrial_operation.ui.brand.entity;
+
+import java.io.Serializable;
+
+public class MyProductEntity implements Serializable {
+
+ private String imgRes;
+
+ private String name;
+
+ private String price;
+
+ private String status; //0-停售,1-在售中
+
+ public String getImgRes() {
+ return imgRes;
+ }
+
+ public void setImgRes(String imgRes) {
+ this.imgRes = imgRes;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPrice() {
+ return price;
+ }
+
+ public void setPrice(String price) {
+ this.price = price;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/ui/brand/entity/PublicBrandDynamicsEntity.java b/app/src/main/java/com/tairui/industrial_operation/ui/brand/entity/PublicBrandDynamicsEntity.java
new file mode 100644
index 0000000..f3eb9c4
--- /dev/null
+++ b/app/src/main/java/com/tairui/industrial_operation/ui/brand/entity/PublicBrandDynamicsEntity.java
@@ -0,0 +1,34 @@
+package com.tairui.industrial_operation.ui.brand.entity;
+
+import java.io.Serializable;
+
+public class PublicBrandDynamicsEntity implements Serializable {
+
+ private String title;
+ private String content;
+ private String date;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+}
diff --git a/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java b/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java
index a89ad74..3289df4 100644
--- a/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java
+++ b/app/src/main/java/com/tairui/industrial_operation/util/AppUtil.java
@@ -1,35 +1,69 @@
package com.tairui.industrial_operation.util;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import com.tairui.industrial_operation.R;
import com.tairui.industrial_operation.ui.photoview.PhotoViewActivty;
import com.tairui.industrial_operation.widget.loading.LoadingDialog;
import android.content.Context;
import android.os.Bundle;
+import androidx.annotation.RawRes;
public class AppUtil {
- public static LoadingDialog getLoading(Context context) {
- return getLoading(context, 1);
- }
+ public static LoadingDialog getLoading(Context context) {
+ return getLoading(context, 1);
+ }
- public static LoadingDialog getLoading(Context context, int style) {
- if (null != context) {
- LoadingDialog loading = new LoadingDialog(context);
- loading.setLoadStyle(style); //STYLE_RING = 0; STYLE_LINE = 1;
- loading.setLoadingText(null);
- loading.setInterceptBack(false);
- return loading;
- } else {
- return null;
- }
- }
+ public static LoadingDialog getLoading(Context context, int style) {
+ if (null != context) {
+ LoadingDialog loading = new LoadingDialog(context);
+ loading.setLoadStyle(style); //STYLE_RING = 0; STYLE_LINE = 1;
+ loading.setLoadingText(null);
+ loading.setInterceptBack(false);
+ return loading;
+ } else {
+ return null;
+ }
+ }
- public static void startPhotoView(Context context, ArrayList imgs){
- Bundle bundle = new Bundle();
- bundle.putInt("index", 0);
- bundle.putStringArrayList("imgs", imgs);
- IntentUtil.startActivity(context, PhotoViewActivty.class, bundle);
- }
+ public static void startPhotoView(Context context, ArrayList imgs) {
+ Bundle bundle = new Bundle();
+ bundle.putInt("index", 0);
+ bundle.putStringArrayList("imgs", imgs);
+ IntentUtil.startActivity(context, PhotoViewActivty.class, bundle);
+ }
+
+ public static String loadJsonFromRaw(Context context, @RawRes int rawRes) {
+ String jsonString = null;
+ try {
+ InputStream inputStream = context.getResources().openRawResource(rawRes);
+ int size = inputStream.available();
+ byte[] buffer = new byte[size];
+ inputStream.read(buffer);
+ inputStream.close();
+ jsonString = new String(buffer, StandardCharsets.UTF_8);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return jsonString;
+ }
+
+ // 根据图片名称获取本地资源ID
+ public static int getDrawableId(String imageName) {
+ try {
+ // 通过反射获取资源类的字段
+ Field field = R.mipmap.class.getField(imageName);
+ return field.getInt(null);
+ } catch (NoSuchFieldException | IllegalAccessException e) {
+ e.printStackTrace();
+ // 若没找到资源,返回默认图片
+ return R.mipmap.ic_launcher;
+ }
+ }
}
diff --git a/app/src/main/res/drawable/bg_container_gray_raduis_30.xml b/app/src/main/res/drawable/bg_container_gray_raduis_30.xml
new file mode 100644
index 0000000..c0d2c87
--- /dev/null
+++ b/app/src/main/res/drawable/bg_container_gray_raduis_30.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_my_product.xml b/app/src/main/res/layout/activity_my_product.xml
new file mode 100644
index 0000000..c610919
--- /dev/null
+++ b/app/src/main/res/layout/activity_my_product.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_public_brand.xml b/app/src/main/res/layout/activity_public_brand.xml
index 81a6964..62bbeeb 100644
--- a/app/src/main/res/layout/activity_public_brand.xml
+++ b/app/src/main/res/layout/activity_public_brand.xml
@@ -3,6 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
+ android:background="@color/color_f8f8f8"
android:layout_height="match_parent">
-
+
+
+
+
+ android:layout_height="wrap_content">
-
+
-
+
-
+
-
-
-
-
-
-
-
+
+
diff --git a/app/src/main/res/layout/activity_public_brand_dynamics.xml b/app/src/main/res/layout/activity_public_brand_dynamics.xml
new file mode 100644
index 0000000..eb351a9
--- /dev/null
+++ b/app/src/main/res/layout/activity_public_brand_dynamics.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_public_brand_dynamics_detail.xml b/app/src/main/res/layout/activity_public_brand_dynamics_detail.xml
new file mode 100644
index 0000000..372d901
--- /dev/null
+++ b/app/src/main/res/layout/activity_public_brand_dynamics_detail.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_my_product.xml b/app/src/main/res/layout/item_my_product.xml
new file mode 100644
index 0000000..f98d425
--- /dev/null
+++ b/app/src/main/res/layout/item_my_product.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_public_brand_dynamics.xml b/app/src/main/res/layout/item_public_brand_dynamics.xml
new file mode 100644
index 0000000..806e5b8
--- /dev/null
+++ b/app/src/main/res/layout/item_public_brand_dynamics.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_my_product_1.png b/app/src/main/res/mipmap-xxhdpi/pic_my_product_1.png
new file mode 100644
index 0000000..273054e
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_my_product_1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/pic_my_product_2.png b/app/src/main/res/mipmap-xxhdpi/pic_my_product_2.png
new file mode 100644
index 0000000..70fef96
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/pic_my_product_2.png differ
diff --git a/app/src/main/res/raw/my_product.json b/app/src/main/res/raw/my_product.json
new file mode 100644
index 0000000..4272b65
--- /dev/null
+++ b/app/src/main/res/raw/my_product.json
@@ -0,0 +1,14 @@
+[
+ {
+ "name": "耿马普罗旺斯西红柿沙瓤番茄甄选番茄苗",
+ "imgRes": "pic_my_product_1",
+ "price": "4.50",
+ "status": "1"
+ },
+ {
+ "name": "紫皮长茄子新鲜蔬菜细茄子长条茄子杭茄",
+ "imgRes": "pic_my_product_2",
+ "price": "4.50",
+ "status": "1"
+ }
+]
\ No newline at end of file
diff --git a/app/src/main/res/raw/public_brand_dynamics.json b/app/src/main/res/raw/public_brand_dynamics.json
new file mode 100644
index 0000000..b9c8550
--- /dev/null
+++ b/app/src/main/res/raw/public_brand_dynamics.json
@@ -0,0 +1,17 @@
+[
+ {
+ "title": "《耿马农产品公共品牌使用规范》",
+ "content": "一、总则为规范“耿品”公共品牌(以下简称“品牌”)的使用与管理,维护品牌形象与声誉,保障消费者权益,促进耿马县农产品高质量发展,特制定本规范。二、品牌定位“耿品”品牌代表耿马县出产的,具有优良品质、鲜明地域特色及生态、健康、可信赖特质的农产品整体形象。三、使用原则1.自愿申请: 符合条件的主体自愿申请使用。2.授权许可: 经品牌管理机构审核授权后方可使用。3.统一管理: 遵循品牌标识系统、品质标准及宣传规范。4.权责一致: 使用者享有品牌权益,承担维护责任。四、申请主体资格1.在耿马县依法注册登记,从事相关农产品生产、加工、经营的企业、合作社、家庭农场等。2.具备合法有效的生产经营资质。3.产品符合国家及行业相关质量标准、安全规范。4.近三年内无重大质量安全、诚信经营不良记录。五、产品准入标准1.产地要求: 主要原料产自耿马县行政区域内。2.品质要求: 符合“耿品”品牌制定的具体产品品质标准(如理化指标、感官要求等)。3.认证要求: 鼓励通过绿色食品、有机产品、地理标志等认证。4包装要求: 使用经审核备案的包装设计,清晰标注品牌授权标识、产品信息、生产者信息、溯源信息等。六、品牌标识使用规范1.标准展示: 严格按照《“耿品”品牌视觉识别系统手册》规定使用标识,包括图形、字体、色彩、组合方式等,不得擅自更改。2.突出位置: 品牌主标识应在产品包装、宣传材料显著位置清晰展示。3.禁用情形: 不得用于未授权产品、不合格产品及可能损害品牌声誉的场合。七、使用流程1.申请: 提交申请表、主体资质证明、产品质检报告等材料。2.审核: 品牌管理机构组织材料审核与实地考察。3.签约: 审核通过后签订《“耿品”品牌使用授权协议》。4.授权: 颁发授权证书,明确授权产品范围、有效期。5.续期: 有效期届满前申请续期,重新审核。八、使用者义务1.维护品牌形象,保证产品质量安全。2.规范使用品牌标识,接受监督管理。3.建立产品溯源体系,确保来源可追溯。4.及时报告重大变更(如生产条件、产品标准变更)。5.配合品牌宣传推广活动。九、监督管理1.日常监管: 品牌管理机构进行不定期抽检和市场巡查。2.社会监督: 接受消费者、媒体等社会监督。3.违规处理: 对违反本规范或授权协议者,视情节轻重给予警告、责令整改、暂停授权直至撤销授权处理,并公告。十、退出机制授权期满未续期、主动申请退出、被撤销授权或主体资格丧失时,须立即停止使用品牌标识及相关宣传,并配合后续处理。十一、附则1.本规范由耿马县“耿品”品牌管理机构负责解释。2.本规范自发布之日起施行。",
+ "date": "2025.01.01"
+ },
+ {
+ "title": "《云南省 “绿色食品牌” 品牌目录管理办法》",
+ "content": "该办法自 2021 年 9 月 1 日起施行,明确了云南省 “绿色食品牌” 品牌目录相关事宜。其中规定,申报产品为食用农产品的,应当获得绿色食品、有机农产品、良好农业规范(GAP)认证之一且在有效期内,或获得不低于绿色食品质量认证要求的其他质量或管理体系认证,才有资格申报品牌目录。入选品牌目录的品牌经云南省绿色食品发展中心授权后,许可使用云南省 “绿色食品牌” 统一形象标识。若违规使用形象标识,将被退出目录,且三年内不得再次申报。",
+ "date": "2021.09.01"
+ },
+ {
+ "title": "《云南省绿色食品牌形象标识管理办法(试行)》",
+ "content": "该办法自 2021 年 1 月 18 日起实施,规定云南省 “绿色食品牌” 形象标识由云南省绿色食品发展中心依法申请全类商标注册,受法律保护。获得云南省 “绿色食品牌” 名品名企表彰的生产经营主体等可优先获得使用授权。形象标识经授权后,由使用主体自行印制或加贴使用,使用过程中不得更改图案、色相,但图形大小可按比例缩放。若不符合规定使用,或产地环境受污染、产品质量不合格等,不得继续使用该形象标识,还将被依法追究相关责任。",
+ "date": "2021.01.18"
+ }
+]
\ No newline at end of file