管灌系统巡查员智能手机App
zuoxiao
2024-12-09 a2a1bd40089d81286f8257ca4c61ce49155b6af3
1.详情界面显示已上传的图片并可放大查看
6个文件已修改
1个文件已添加
135 ■■■■■ 已修改文件
app/build.gradle 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_order_detail.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -181,4 +181,12 @@
    implementation 'io.github.lucksiege:pictureselector:v3.11.2'
    // 图片压缩 (按需引入)
    implementation 'io.github.lucksiege:compress:v3.11.2'
    //    图片查看
    implementation('com.github.SherlockGougou:BigImageViewPager:androidx-7.2.3') {
        exclude group: 'androidx.appcompat';
        exclude group: 'com.google.android.material';
        exclude group: 'androidx.core';
    }
}
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -7,20 +7,36 @@
import android.view.View;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.adapter.ImageAdapter;
import com.dayu.pipirrapp.bean.net.DealDetailResult;
import com.dayu.pipirrapp.bean.net.ImageResult;
import com.dayu.pipirrapp.bean.net.OrderDetailResult;
import com.dayu.pipirrapp.databinding.ActivityOrderDetailBinding;
import com.dayu.pipirrapp.net.ApiManager;
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
import com.dayu.pipirrapp.tool.GlideEngine;
import com.dayu.pipirrapp.utils.ToastUtil;
import com.dayu.pipirrapp.view.TitleBar;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
import com.luck.picture.lib.engine.ImageEngine;
import com.luck.picture.lib.utils.DensityUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cc.shinichi.library.ImagePreview;
import cc.shinichi.library.bean.ImageInfo;
/**
 * OrderDetailActivity -
@@ -34,6 +50,10 @@
    ActivityOrderDetailBinding binding;
    String workOrderId;
    String proResultId;
    ImageAdapter mAdapter;
    List<ImageResult> images = new ArrayList<>();
    RecyclerView mRecyclerView;
    final List<String> imageInfoList = new ArrayList<>();
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -61,6 +81,20 @@
        binding.setItemclidk(OrderDetailActivity.this);
        mRecyclerView = binding.recyclerView;
        FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false);
        mRecyclerView.setLayoutManager(manager);
        RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator();
        if (itemAnimator != null) {
            ((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false);
        }
        // 添加间距装饰,确保图片有合适的间隔
        mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false));
        mAdapter = new ImageAdapter(this, images, (v, position) -> {
            ImagePreview.getInstance().setContext(OrderDetailActivity.this).setImageList(imageInfoList).start();
        });
        mRecyclerView.setAdapter(mAdapter);
    }
    /**
@@ -132,7 +166,13 @@
                if (t.isSuccess()) {
                    if (t.isSuccess()) {
                        if (t.getContent() != null) {
                            binding.orderDealLL.setVisibility(View.VISIBLE);
                            binding.setDealData(t.getContent());
                            images.addAll(t.getContent().getImages());
                            for (ImageResult imageResult : images) {
                                imageInfoList.add(imageResult.getWebPath());
                            }
                            mAdapter.notifyDataSetChanged();
                        } else {
                            ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
                        }
app/src/main/java/com/dayu/pipirrapp/adapter/AddPictureAdapter.java
@@ -14,7 +14,6 @@
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.listener.OnItemLongClickListener;
import com.luck.picture.lib.adapter.holder.PreviewGalleryAdapter;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
app/src/main/java/com/dayu/pipirrapp/adapter/ImageAdapter.java
@@ -1,5 +1,6 @@
package com.dayu.pipirrapp.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -8,7 +9,13 @@
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.bean.net.ImageResult;
import com.dayu.pipirrapp.tool.GlideEngine;
import java.util.List;
/**
 * ImageAdapter -
@@ -17,12 +24,16 @@
 * @version 1.0
 * @since 2024-11-27
 */
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder>{
    private String[] imageUrls;  // 图片的 URL 或本地路径
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> {
    private List<ImageResult> imageUrls;  // 图片的 URL 或本地路径
    private Context mContext;
    private OnItemClickListener onItemClickListener;
    // 构造方法
    public ImageAdapter(String[] imageUrls) {
    public ImageAdapter(Context context, List<ImageResult> imageUrls, OnItemClickListener onItemClickListener) {
        this.imageUrls = imageUrls;
        this.mContext = context;
        this.onItemClickListener = onItemClickListener;
    }
    @Override
@@ -34,16 +45,26 @@
    @Override
    public void onBindViewHolder(ImageViewHolder holder, int position) {
        // 使用 Glide 加载图片到 ImageView 中
        Glide.with(holder.itemView.getContext())
                .load(imageUrls[position])  // 加载图片的 URL 或路径
                .thumbnail(0.1f)  // 设置缩略图比例
                .load(imageUrls.get(position).getWebPath())  // 加载图片的 URL 或路径
                .thumbnail(0.1f)  // 设置缩略图比例'
                .transform(new CenterCrop(), new RoundedCorners(8))
                .placeholder(R.drawable.ps_image_placeholder)
                .into(holder.imageView);
        holder.imageView.setOnClickListener(v -> {
            onItemClickListener.onItemClick(v, position);
        });
    }
    @Override
    public int getItemCount() {
        return imageUrls.length;
        if (imageUrls == null) {
            return 0;
        }
        return imageUrls.size();
    }
    public static class ImageViewHolder extends RecyclerView.ViewHolder {
app/src/main/java/com/dayu/pipirrapp/bean/net/DealDetailResult.java
@@ -1,5 +1,7 @@
package com.dayu.pipirrapp.bean.net;
import java.util.List;
/**
 * DealDetailResult -处理结果详情接口
 *
@@ -19,6 +21,16 @@
    int state;//状态 1-已上报,2-已通过,3-已驳回
    String stateName;// 状态名称
    List<ImageResult> images;
    public List<ImageResult> getImages() {
        return images;
    }
    public void setImages(List<ImageResult> images) {
        this.images = images;
    }
    public String getProResultId() {
        return proResultId;
    }
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java
New file
@@ -0,0 +1,29 @@
package com.dayu.pipirrapp.bean.net;
/**
 * ImageResult -返回的图片相关
 *
 * @author zuoxiao
 * @version 1.0
 * @since 2024-12-06
 */
public class ImageResult {
    String id;
    String webPath;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getWebPath() {
        return webPath;
    }
    public void setWebPath(String webPath) {
        this.webPath = webPath;
    }
}
app/src/main/res/layout/activity_order_detail.xml
@@ -271,7 +271,6 @@
                        android:id="@+id/xiangMuType"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="@{data.taskContent}"
                        android:textColor="@color/manage_item_text"
                        android:textSize="@dimen/order_detail_text_size" />
@@ -284,13 +283,19 @@
                    android:id="@+id/orderDealLL"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="15dp"
                    android:orientation="vertical"
                    android:visibility="visible">
                    <View
                        android:layout_width="match_parent"
                        android:layout_height="2dp"
                        android:background="@color/base_blue" />
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        android:layout_marginTop="5dp"
                        android:gravity="center"
                        android:text="处理结果"
                        android:textColor="@color/base_blue"
@@ -368,7 +373,8 @@
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_centerInParent="true"
                            android:layout_marginTop="10dp" />
                            android:layout_marginTop="10dp"
                            android:minHeight="100dp" />
                    </LinearLayout>