diff --git a/app/build.gradle b/app/build.gradle index 147ef6c..769ab02 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -194,6 +194,7 @@ dependencies { implementation 'net.sourceforge.jexcelapi:jxl:2.6.12' // 腾讯 MMKV:https://github.com/Tencent/MMKV implementation 'com.tencent:mmkv:1.3.9' - + // BRVAH https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki + implementation "io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4" } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/network/Api.kt b/app/src/main/java/com/project/survey/network/Api.kt index 9e319b6..b1c024f 100644 --- a/app/src/main/java/com/project/survey/network/Api.kt +++ b/app/src/main/java/com/project/survey/network/Api.kt @@ -16,7 +16,7 @@ interface Api { ): HttpResult /** - * 获取用户在工作的所以项目的信息 + * 获取用户可访问的所有项目的信息 */ @GET("/je/project/getAllProjectIDByAccount") suspend fun getAllProjectIDByAccount( diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt index 73a35ba..9fc6de0 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt @@ -1,51 +1,76 @@ package com.project.survey.ui.project +import android.view.Menu +import android.view.MenuItem +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.bingce.ui.TabEntity import com.flyco.tablayout.listener.CustomTabEntity +import com.gyf.immersionbar.ImmersionBar import com.project.survey.R import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.databinding.ActivityProjectListBinding import com.project.survey.util.ActivityNavUtil class ProjectListActivity : BaseBindingActivity() { - override fun getBinding(): ActivityProjectListBinding { - return ActivityProjectListBinding.inflate(layoutInflater) + + companion object { + fun start() { + ActivityNavUtil.startActivity { } + } } + override fun getBinding(): ActivityProjectListBinding = + ActivityProjectListBinding.inflate(layoutInflater) + override fun initView() { + ImmersionBar.with(this) + .statusBarDarkFont(true) + .titleBarMarginTop(mBinding.ilToolBar.toolbar) + .init() + setSupportActionBar(mBinding.ilToolBar.toolbar) + + mBinding.ilToolBar.toolbar.setBackgroundColor(0) + mBinding.ilToolBar.toolbar.setTitle("项目列表") + mBinding.ilToolBar.toolbar.setTitleTextColor(ContextCompat.getColor(this, R.color.text_color_main)) initTabLayout() } + override fun initData() { + } + private fun initTabLayout() { - val mTabEntities = ArrayList() - mTabEntities.add( - TabEntity( - "最近打开", - R.drawable.ic_project_recently, - R.drawable.ic_project_recently - ) - ) - mTabEntities.add( - TabEntity( - "全部", - R.drawable.ic_project_all, - R.drawable.ic_project_all + mBinding.tabLayout.setTabData( + arrayListOf( + TabEntity( + "最近打开", + R.drawable.ic_project_recently_selected, + R.drawable.ic_project_recently_unselected + ), + TabEntity( + "全部", + R.drawable.ic_project_all_selected, + R.drawable.ic_project_all_unselected + ) + ), + this, + R.id.container, + arrayListOf( + ProjectListFragment.newInstance(ProjectListFragment.TYPE_RECENTLY), + ProjectListFragment.newInstance(ProjectListFragment.TYPE_ALL) ) ) - val fragmentList = ArrayList() - fragmentList.add(ProjectListFragment.newInstance(ProjectListFragment.TYPE_RECENTLY)) - fragmentList.add(ProjectListFragment.newInstance(ProjectListFragment.TYPE_ALL)) - - mBinding.tabLayout.setTabData(mTabEntities, this, R.id.container, fragmentList) } - override fun initData() { + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.menu_activity_project_list, menu) + return super.onCreateOptionsMenu(menu) } - companion object { - fun start(){ - ActivityNavUtil.startActivity { } + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (item.itemId == R.id.menu_activity_project_list_exit) { + finish() } + return super.onOptionsItemSelected(item) } } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt b/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt index 72ed230..e061692 100644 --- a/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt +++ b/app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt @@ -4,63 +4,55 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.fragment.app.Fragment -import com.project.survey.adapter.ProjectListAdapter +import androidx.fragment.app.viewModels +import com.project.survey.constants.SPConstants import com.project.survey.databinding.FragmentProjectListBinding -import com.project.survey.ui.base.BaseFragmentBinding -import com.project.survey.model.ProjectBean +import com.project.survey.logic.viewmodel.ProjectViewModel +import com.project.survey.ui.base.BaseBindingFragment +import com.project.survey.ui.project.adapter.ProjectListAdapter +import com.project.survey.util.SPUtils +import com.project.survey.util.param.Param import com.project.survey.widget.decoration.HorDividerDecoration -class ProjectListFragment : BaseFragmentBinding() { - - private val adapter by lazy { ProjectListAdapter(requireContext()) } +class ProjectListFragment : BaseBindingFragment() { companion object { const val TYPE_RECENTLY = "1" const val TYPE_ALL = "2" - const val KEY_TYPE = "KEY_TYPE" fun newInstance(type: String): Fragment { - val fragment = ProjectListFragment() - fragment.arguments = bundleOf( - KEY_TYPE to type - ) - return fragment + return ProjectListFragment().apply { + arguments = bundleOf("type" to type) + } } } - override fun getViewBinding( + override fun getBinding( inflater: LayoutInflater, container: ViewGroup? - ): FragmentProjectListBinding { - return FragmentProjectListBinding.inflate(inflater, container, false) - } + ): FragmentProjectListBinding = FragmentProjectListBinding.inflate(inflater, container, false) + + private val viewModel: ProjectViewModel by viewModels() + private val adapter by lazy { ProjectListAdapter() } + + @Param + private lateinit var type: String override fun initView() { - initAdapter() + binding.recyclerView.addItemDecoration(HorDividerDecoration(mContext)) + binding.recyclerView.setAdapter(adapter) } override fun initData() { - val type = getArgumentString(KEY_TYPE) - - val num = if (type == TYPE_RECENTLY) { - 3 - } else { - 6 + viewModel.projectResponse.observe(this) { + adapter.submitList(it) } - val dataList = mutableListOf() - for (i in 0 until num) { - dataList.add(ProjectBean("","")) - } - - adapter.refreshData(dataList) + viewModel.getAllProjectIDByAccount(SPUtils.getString(SPConstants.ACCOUNT) ?: "") } - private fun initAdapter() { - mBinding.recyclerView.addItemDecoration(HorDividerDecoration(requireContext())) - adapter.setOnItemClickListener { + override fun initListener() { - } - mBinding.recyclerView.setAdapter(adapter) } + } \ No newline at end of file diff --git a/app/src/main/java/com/project/survey/ui/project/adapter/ProjectListAdapter.kt b/app/src/main/java/com/project/survey/ui/project/adapter/ProjectListAdapter.kt new file mode 100644 index 0000000..655a8e7 --- /dev/null +++ b/app/src/main/java/com/project/survey/ui/project/adapter/ProjectListAdapter.kt @@ -0,0 +1,27 @@ +package com.project.survey.ui.project.adapter + +import android.content.Context +import android.view.ViewGroup +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.project.survey.R +import com.project.survey.model.ProjectBean + +class ProjectListAdapter : BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: ProjectBean?) { + + item?.let { bean -> + holder.setText(R.id.tvProjectName, bean.XMXX_INDUSTRYTYPE) + .setText(R.id.tvProjectNum, bean.XMXX_PILENO) + .setText(R.id.tvProjectArea, "上海市长宁区") + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.item_project_list, parent) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_project_all_selected.xml b/app/src/main/res/drawable/ic_project_all_selected.xml new file mode 100644 index 0000000..512ab4a --- /dev/null +++ b/app/src/main/res/drawable/ic_project_all_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_project_all.xml b/app/src/main/res/drawable/ic_project_all_unselected.xml similarity index 100% rename from app/src/main/res/drawable/ic_project_all.xml rename to app/src/main/res/drawable/ic_project_all_unselected.xml diff --git a/app/src/main/res/drawable/ic_project_recently.xml b/app/src/main/res/drawable/ic_project_recently_selected.xml similarity index 100% rename from app/src/main/res/drawable/ic_project_recently.xml rename to app/src/main/res/drawable/ic_project_recently_selected.xml diff --git a/app/src/main/res/drawable/ic_project_recently_unselected.xml b/app/src/main/res/drawable/ic_project_recently_unselected.xml new file mode 100644 index 0000000..1c3c0ba --- /dev/null +++ b/app/src/main/res/drawable/ic_project_recently_unselected.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon_toolbar_exit.xml b/app/src/main/res/drawable/icon_toolbar_exit.xml new file mode 100644 index 0000000..6c78e4f --- /dev/null +++ b/app/src/main/res/drawable/icon_toolbar_exit.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_project_list.xml b/app/src/main/res/layout/activity_project_list.xml index fc9fc85..d8d1bb7 100644 --- a/app/src/main/res/layout/activity_project_list.xml +++ b/app/src/main/res/layout/activity_project_list.xml @@ -21,16 +21,15 @@ android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="54dp" - android:background="#ffffff" + android:background="@color/bg_color_main_tab" tl:tl_iconHeight="23dp" tl:tl_iconWidth="23dp" - tl:tl_indicator_color="#3498db" tl:tl_indicator_height="0dp" - tl:tl_textSelectColor="#3498db" - tl:tl_textUnselectColor="#666666" + tl:tl_textSelectColor="@color/text_color_tab_selected" + tl:tl_textUnselectColor="@color/text_color_tab_unselected" tl:tl_textsize="12sp" - tl:tl_underline_color="#cfcfcf" + tl:tl_underline_color="@color/bg_color_main_underline_color" tl:tl_underline_gravity="TOP" - tl:tl_underline_height="1dp" /> + tl:tl_underline_height="0.5dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_project_list.xml b/app/src/main/res/layout/item_project_list.xml index 784f08c..207bccf 100644 --- a/app/src/main/res/layout/item_project_list.xml +++ b/app/src/main/res/layout/item_project_list.xml @@ -1,57 +1,53 @@ - + android:paddingVertical="18dp"> + android:src="@drawable/ic_project_list" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - - - - - - - - - \ No newline at end of file + android:layout_marginStart="14dp" + android:textColor="@color/text_color_20" + android:textSize="15sp" + android:textStyle="bold" + app:layout_constraintStart_toEndOf="@id/ivIcon" + app:layout_constraintTop_toTopOf="parent" + tools:text="xx工程" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml index daa060f..bf9e07d 100644 --- a/app/src/main/res/layout/toolbar.xml +++ b/app/src/main/res/layout/toolbar.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="?actionBarSize" android:background="?colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" diff --git a/app/src/main/res/menu/menu_activity_project_list.xml b/app/src/main/res/menu/menu_activity_project_list.xml new file mode 100644 index 0000000..bf8ee46 --- /dev/null +++ b/app/src/main/res/menu/menu_activity_project_list.xml @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 399ce8f..71132d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -343,5 +343,6 @@ 首页 仪器 我的 + 退出 \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 998e1c5..eabfbb0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -119,4 +119,8 @@ + +