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