From f35781ec4851130df4292b3249f8b5385bad75d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 14 Apr 2026 16:27:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ui):=20=E9=87=8D=E6=9E=84=20ReviewActi?= =?UTF-8?q?vity=20=E4=BD=BF=E7=94=A8=E6=96=B0=E7=9A=84=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=9F=BA=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 ReviewActivity 继承自 BaseListFormLayoutNormalActivity 替代原有基类 - 移除 SwipeRefreshLayout 包装器,直接使用 RecyclerView - 修改 RecyclerView 高度从 300dp 调整为 220dp - 添加水平滚动方向支持 - 移除未使用的导入包和变量 - 创建新的基础列表活动模板 BaseListFormLayoutNormalActivity - 简化布局文件结构,移除嵌套的 EmptyView 和 SwipeRefreshLayout --- .../com/nova/brain/glass/ui/ReviewActivity.kt | 14 +-- app/src/main/res/layout/activity_review.xml | 24 +--- .../ui/BaseListFormLayoutNormalActivity.java | 105 ++++++++++++++++++ .../res/layout/activity_base_list_normal.xml | 9 ++ 4 files changed, 126 insertions(+), 26 deletions(-) create mode 100644 base/src/main/java/com/xuqm/base/ui/BaseListFormLayoutNormalActivity.java create mode 100644 base/src/main/res/layout/activity_base_list_normal.xml diff --git a/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt index 3134be1..8e51314 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt @@ -1,23 +1,23 @@ package com.nova.brain.glass.ui -import android.content.Intent +import androidx.recyclerview.widget.RecyclerView import com.nova.brain.glass.R -import com.nova.brain.glass.databinding.ActivityFoBinding import com.nova.brain.glass.databinding.ActivityReviewBinding import com.nova.brain.glass.helper.OfflineCmdListener import com.nova.brain.glass.helper.OfflineCmdServiceHelper import com.nova.brain.glass.model.ItemItem -import com.nova.brain.glass.model.TaskItem import com.nova.brain.glass.viewmodel.ItemListVM import com.xuqm.base.adapter.BasePagedAdapter import com.xuqm.base.adapter.CommonPagedAdapter import com.xuqm.base.adapter.ViewHolder -import com.xuqm.base.ui.BaseActivity -import com.xuqm.base.ui.BaseListFormLayoutActivity +import com.xuqm.base.ui.BaseListFormLayoutNormalActivity -class ReviewActivity : BaseListFormLayoutActivity() { +class ReviewActivity : BaseListFormLayoutNormalActivity() { override fun getLayoutId(): Int =R.layout.activity_review override fun fullscreen(): Boolean = true + + override fun getRecyclerOrientation(): Int = RecyclerView.HORIZONTAL + private val listener = object : OfflineCmdListener { override fun onOfflineCmd(cmd: String) { when( cmd){ @@ -61,4 +61,4 @@ class ReviewActivity : BaseListFormLayoutActivity = adapter -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/activity_review.xml b/app/src/main/res/layout/activity_review.xml index 2cb97e5..2603574 100644 --- a/app/src/main/res/layout/activity_review.xml +++ b/app/src/main/res/layout/activity_review.xml @@ -23,7 +23,7 @@ android:id="@+id/content" android:layout_width="0dp" android:background="@drawable/bg_item" - android:layout_height="300dp" + android:layout_height="220dp" android:text="采用手工铺贴,按操作规程CD1442要求进行铺贴,将铺层信息填写在表SAMC 31-71《零件铺层信息、生产记录表》中,并扫描上传。 1)I型表面胶膜铺贴最大搭接6mm或对接最大间隙1.5mm。按投影线及工装余量刻线进行铺贴。 2)织物铺层的方向公差为±5°,铺贴中允许搭接13mm~25mm或对接间隙≤1.5mm,拼缝错开至少25mm,同向铺层之间可以每隔4层重复拼缝的错开位置。按投影线及工装余量刻线进行铺贴,加强层铺贴位置公差为投影位置±2.5mm。" android:textColor="#ff40FF5E" android:layout_marginTop="10dp" @@ -33,29 +33,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvTaskHeader" /> - - - - - - - + app:layout_constraintTop_toBottomOf="@id/content" /> diff --git a/base/src/main/java/com/xuqm/base/ui/BaseListFormLayoutNormalActivity.java b/base/src/main/java/com/xuqm/base/ui/BaseListFormLayoutNormalActivity.java new file mode 100644 index 0000000..f6824be --- /dev/null +++ b/base/src/main/java/com/xuqm/base/ui/BaseListFormLayoutNormalActivity.java @@ -0,0 +1,105 @@ +package com.xuqm.base.ui; + +import android.os.Bundle; +import android.view.View; + +import androidx.databinding.ViewDataBinding; +import androidx.lifecycle.ViewModelProvider; +import androidx.paging.PagedList; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.xuqm.base.R; +import com.xuqm.base.adapter.BaseItem; +import com.xuqm.base.adapter.BasePagedAdapter; +import com.xuqm.base.common.RefreshResult; +import com.xuqm.base.viewmodel.BaseListViewModel; +import com.xuqm.base.viewmodel.callback.AdapterObserverCallback; +import com.xuqm.base.viewmodel.callback.DataObserverCallback; + +import java.lang.reflect.ParameterizedType; + +public abstract class BaseListFormLayoutNormalActivity, V extends ViewDataBinding> + extends BaseActivity { + + private final ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass(); + private final Class cal = (Class) parameterizedType.getActualTypeArguments()[1]; + private VM viewModel; + private BasePagedAdapter adapter; + + public RecyclerView recyclerView; + + @Override + public int getLayoutId() { + return R.layout.activity_base_list_normal; + } + + public VM getViewModel() { + return viewModel; + } + + public BasePagedAdapter getAdapter() { + return adapter; + } + + @Override + public void initView(Bundle savedInstanceState) { + viewModel = new ViewModelProvider(this).get(cal); + adapter = adapter(); + adapter.setItemClickListener(this::itemClicked); + adapter.setItemLongClickListener(this::itemLongClicked); + recyclerView = findViewById(R.id.baseRecyclerView); + recyclerView.setAdapter(adapter); + recyclerView.setLayoutManager(new LinearLayoutManager(mContext, getRecyclerOrientation(), false)); + } + + @Override + public void initData() { + viewModel.observeDataObserver(this, new DataObserverCallback() { + @Override + public void data(PagedList data) { + adapter.submitList(data); + } + + @Override + public void refreshResult(RefreshResult refreshResult) { + refreshFinished(refreshResult); + } + + @Override + public void loadMoreResult(RefreshResult refreshResult) { + loadMoreFinished(refreshResult); + } + }); + viewModel.observeAdapterObserver(this, new AdapterObserverCallback() { + @Override + public void notifyItem(int position, Object payload) { + adapter.notifyItemChanged(position, payload); + } + + @Override + public void removeItem(int position) { + adapter.notifyItemRangeRemoved(position, adapter.getItemCount() - 1); + } + }); + } + + public void itemClicked(View view, T item, int position) { + } + + public boolean itemLongClicked(View view, T item, int position) { + return false; + } + + protected int getRecyclerOrientation() { + return RecyclerView.VERTICAL; + } + + public void refreshFinished(RefreshResult result) { + } + + public void loadMoreFinished(RefreshResult result) { + } + + public abstract BasePagedAdapter adapter(); +} diff --git a/base/src/main/res/layout/activity_base_list_normal.xml b/base/src/main/res/layout/activity_base_list_normal.xml new file mode 100644 index 0000000..ee53629 --- /dev/null +++ b/base/src/main/res/layout/activity_base_list_normal.xml @@ -0,0 +1,9 @@ + + + + +