管灌系统巡查员智能手机App
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.dayu.pipirrapp.view;
 
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
 
import androidx.annotation.NonNull;
 
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.bean.db.SearchResultBean;
 
import java.util.ArrayList;
import java.util.List;
 
public class SearchResultDialog extends Dialog {
    private Context context;
    private List<SearchResultBean> searchResults = new ArrayList<>();
    private OnItemClickListener onItemClickListener;
 
    public interface OnItemClickListener {
        void onItemClick(SearchResultBean item);
    }
 
    public SearchResultDialog(@NonNull Context context) {
        super(context, R.style.CustomDialog);
        this.context = context;
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_search_result);
 
        // 设置对话框位置和大小
        Window window = getWindow();
        if (window != null) {
            WindowManager.LayoutParams params = window.getAttributes();
            params.gravity = Gravity.TOP;
            params.width = WindowManager.LayoutParams.MATCH_PARENT;
            params.height = WindowManager.LayoutParams.WRAP_CONTENT;
            window.setAttributes(params);
        }
 
        ListView listView = findViewById(R.id.listView);
        SearchResultAdapter adapter = new SearchResultAdapter();
        listView.setAdapter(adapter);
 
        listView.setOnItemClickListener((parent, view, position, id) -> {
            if (onItemClickListener != null) {
                onItemClickListener.onItemClick(searchResults.get(position));
            }
            dismiss();
        });
    }
 
    public void setData(List<SearchResultBean> results) {
        this.searchResults.clear();
        this.searchResults.addAll(results);
        if (isShowing()) {
            ListView listView = findViewById(R.id.listView);
            ((SearchResultAdapter) listView.getAdapter()).notifyDataSetChanged();
        }
    }
 
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.onItemClickListener = listener;
    }
 
    private class SearchResultAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return searchResults.size();
        }
 
        @Override
        public SearchResultBean getItem(int position) {
            return searchResults.get(position);
        }
 
        @Override
        public long getItemId(int position) {
            return position;
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                convertView = LayoutInflater.from(context).inflate(R.layout.item_search_result, parent, false);
                holder = new ViewHolder();
                holder.nameText = convertView.findViewById(R.id.nameText);
                holder.addressText = convertView.findViewById(R.id.addressText);
                holder.typeIcon = convertView.findViewById(R.id.typeIcon);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
 
            SearchResultBean item = getItem(position);
            holder.nameText.setText(item.getName());
            holder.addressText.setText(item.getAddress());
            
            // 根据类型设置不同的图标
            if ("marker".equals(item.getType())) {
                holder.typeIcon.setImageResource(R.drawable.marker_blue);
            } else {
                holder.typeIcon.setImageResource(R.drawable.divide_home_blue);
            }
 
            return convertView;
        }
 
        class ViewHolder {
            TextView nameText;
            TextView addressText;
            ImageView typeIcon;
        }
    }