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 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 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; } } }