diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..b0b948c --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..b0b948c --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml index 66c14c7..9c1fe5f 100644 --- a/app/src/main/res/layout/activity_check_history_detail.xml +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -100,7 +100,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="0" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..b0b948c --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml index 66c14c7..9c1fe5f 100644 --- a/app/src/main/res/layout/activity_check_history_detail.xml +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -100,7 +100,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="0" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..b0b948c --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml index 66c14c7..9c1fe5f 100644 --- a/app/src/main/res/layout/activity_check_history_detail.xml +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -100,7 +100,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="0" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history.xml b/app/src/main/res/layout/item_check_history.xml index 4b42aa4..ff1aefd 100644 --- a/app/src/main/res/layout/item_check_history.xml +++ b/app/src/main/res/layout/item_check_history.xml @@ -78,7 +78,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="4" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..b0b948c --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml index 66c14c7..9c1fe5f 100644 --- a/app/src/main/res/layout/activity_check_history_detail.xml +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -100,7 +100,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="0" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history.xml b/app/src/main/res/layout/item_check_history.xml index 4b42aa4..ff1aefd 100644 --- a/app/src/main/res/layout/item_check_history.xml +++ b/app/src/main/res/layout/item_check_history.xml @@ -78,7 +78,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="4" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> @dimen/sp_18 @drawable/button_main_selector + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index db128b4..af9b29a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -98,4 +98,8 @@ implementation "androidx.camera:camera-view:$camerax_version" //PDF预览 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' + //图片加载框架 + implementation 'com.github.bumptech.glide:glide:4.9.0' + //图片选择框架 + implementation 'io.github.lucksiege:pictureselector:v3.11.1' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 544ae3b..72f9448 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,6 +65,10 @@ + + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java index bb21b14..63ed382 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -46,7 +46,7 @@ private String basis; private String content; private String id; - private String imageList; + private List imageList; private String inspectionId; private String mainClass; private String mainClassName; @@ -88,11 +88,11 @@ this.id = id; } - public String getImageList() { + public List getImageList() { return imageList; } - public void setImageList(String imageList) { + public void setImageList(List imageList) { this.imageList = imageList; } @@ -159,5 +159,35 @@ public void setSubClassName(String subClassName) { this.subClassName = subClassName; } + + public static class ImageListModel { + private String alarmImage; + private String id; + private String inspectionAlarmId; + + public String getAlarmImage() { + return alarmImage; + } + + public void setAlarmImage(String alarmImage) { + this.alarmImage = alarmImage; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAlarmId() { + return inspectionAlarmId; + } + + public void setInspectionAlarmId(String inspectionAlarmId) { + this.inspectionAlarmId = inspectionAlarmId; + } + } } } diff --git a/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt new file mode 100644 index 0000000..03826c5 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/BigImageActivity.kt @@ -0,0 +1,89 @@ +package com.casic.br.app.view + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import com.bumptech.glide.Glide +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityBigImageBinding +import com.casic.br.app.extensions.initImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant + +class BigImageActivity : KotlinBaseActivity() { + override fun initViewBinding(): ActivityBigImageBinding { + return ActivityBigImageBinding.inflate(layoutInflater) + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.black) + binding.leftBackView.setOnClickListener { finish() } + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) + val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) + if (urls == null || urls.size == 0) { + return + } + val imageSize = urls.size + binding.pageNumberView.text = String.format("(" + (index + 1) + "/" + imageSize + ")") + binding.imagePagerView.adapter = BigImageAdapter(this, urls) + binding.imagePagerView.currentItem = index + binding.imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + binding.pageNumberView.text = + String.format("(" + (position + 1) + "/" + imageSize + ")") + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + inner class BigImageAdapter( + private val context: Context, private val data: ArrayList + ) : PagerAdapter() { + + override fun getCount(): Int = data.size + + override fun isViewFromObject(view: View, any: Any): Boolean { + return view == any + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = LayoutInflater.from(context).inflate( + R.layout.item_big_picture, container, false + ) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, any: Any) { + container.removeView(any as View) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index f75e755..caf87cd 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -95,7 +95,13 @@ viewHolder: ViewHolder, position: Int, item: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 数据未绑定 + viewHolder.setText( + R.id.checkTimeView, + "${item.inspectionDate} ${item.startTime}-${item.endTime}" + ) + .setText(R.id.checkSiteView, item.inspectionAddress) + .setText(R.id.troubleCountView, item.alarmCount) + .setText(R.id.checkPersonView, item.inspectionUser) } } binding.recyclerView.adapter = checkHistoryAdapter diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt index f1704d0..fec55b7 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -1,9 +1,12 @@ package com.casic.br.app.view import android.os.Bundle +import android.widget.AdapterView +import android.widget.GridView import androidx.lifecycle.ViewModelProvider import com.casic.br.app.R import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.combineFilePath import com.casic.br.app.extensions.initImmersionBar import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel @@ -11,10 +14,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.LoadState @@ -62,13 +67,17 @@ R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" ).setText(R.id.troubleNameView, item.name) .setText(R.id.troubleContentView, item.content) -// val gridView = viewHolder.getView(R.id.troubleImageView) -// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) -// gridView.adapter = imageAdapter -// gridView.onItemClickListener = -// AdapterView.OnItemClickListener { adapterView, view, position, l -> -// -// } + val gridView = viewHolder.getView(R.id.troubleImageView) + val images = ArrayList() + item.imageList.forEach { imageModel -> + images.add(imageModel.alarmImage.combineFilePath()) + } + val imageAdapter = ReadOnlyImageAdapter(context, images) + gridView.adapter = imageAdapter + gridView.onItemClickListener = + AdapterView.OnItemClickListener { _, _, index, _ -> + navigatePageTo(index, images) + } } } binding.recyclerView.adapter = detailAdapter diff --git a/app/src/main/res/anim/activity_in.xml b/app/src/main/res/anim/activity_in.xml new file mode 100644 index 0000000..f2696ba --- /dev/null +++ b/app/src/main/res/anim/activity_in.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/activity_out.xml b/app/src/main/res/anim/activity_out.xml new file mode 100644 index 0000000..1e424a5 --- /dev/null +++ b/app/src/main/res/anim/activity_out.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml new file mode 100644 index 0000000..b0b948c --- /dev/null +++ b/app/src/main/res/layout/activity_big_image.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml index 66c14c7..9c1fe5f 100644 --- a/app/src/main/res/layout/activity_check_history_detail.xml +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -100,7 +100,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="0" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history.xml b/app/src/main/res/layout/item_check_history.xml index 4b42aa4..ff1aefd 100644 --- a/app/src/main/res/layout/item_check_history.xml +++ b/app/src/main/res/layout/item_check_history.xml @@ -78,7 +78,7 @@ android:layout_marginHorizontal="@dimen/dp_10" android:text="4" android:textColor="@color/red" - android:textSize="@dimen/sp_18" + android:textSize="@dimen/sp_16" android:textStyle="bold" /> @dimen/sp_18 @drawable/button_main_selector + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index e0a4aed..201bfd9 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -4,4 +4,8 @@ + + \ No newline at end of file