diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 41c69e4..557f61e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -24,7 +24,6 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* import java.util.* import kotlin.collections.ArrayList @@ -83,9 +82,7 @@ } }) easyPopupWindow.setBackgroundDrawable(null) - val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( - this, 0f - ) + val x: Int = rightOptionView.width - easyPopupWindow.width easyPopupWindow.showAsDropDown(rightOptionView, x, 0) } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 41c69e4..557f61e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -24,7 +24,6 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* import java.util.* import kotlin.collections.ArrayList @@ -83,9 +82,7 @@ } }) easyPopupWindow.setBackgroundDrawable(null) - val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( - this, 0f - ) + val x: Int = rightOptionView.width - easyPopupWindow.width easyPopupWindow.showAsDropDown(rightOptionView, x, 0) } } diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt index 392d893..d48bb93 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -16,9 +16,7 @@ */ class EasyPopupWindow(private val context: Context) : PopupWindow(context) { - private var clickListener: OnPopupWindowClickListener? = null - private var imageList: Array? = null - private var nameList: Array? = null + private lateinit var clickListener: OnPopupWindowClickListener init { width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() @@ -29,78 +27,51 @@ contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) } - fun setupPopupData(imageList: Array?, stringList: Array?) { - this.imageList = imageList - this.nameList = stringList + fun setupPopupData(imageArray: Array, titleArray: Array) { val popupListView = contentView.findViewById(R.id.popupListView) - setupListView(popupListView) - } + popupListView.adapter = object : BaseAdapter() { + private val inflater: LayoutInflater = LayoutInflater.from(context) - //给PopupWindow列表绑定数据 - private fun setupListView(popupListView: ListView) { - val adapter = PopupAdapter(context, imageList!!, nameList!!) - popupListView.adapter = adapter - popupListView.onItemClickListener = - AdapterView.OnItemClickListener { _, _, i, _ -> - if (clickListener != null) { - clickListener!!.onPopupClick(i) + override fun getCount(): Int = imageArray.size + + override fun getItem(position: Int): Any = imageArray[position] + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getView(position: Int, convertView: View?, viewGroup: ViewGroup): View { + val view: View + val holder: PopupWindowHolder + if (convertView == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.imageView = view.findViewById(R.id.imageView) + holder.titleView = view.findViewById(R.id.titleView) + view.tag = holder + } else { + view = convertView + holder = view.tag as PopupWindowHolder } - dismiss() + holder.imageView.setBackgroundResource(imageArray[position]) + holder.titleView.text = titleArray[position] + return view } + } + popupListView.onItemClickListener = AdapterView.OnItemClickListener { _, _, i, _ -> + clickListener.onPopupClick(i) + dismiss() + } } interface OnPopupWindowClickListener { fun onPopupClick(position: Int) } - fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener) { clickListener = windowClickListener } - inner class PopupAdapter( - mContext: Context?, - private val imageList: Array, - private val nameList: Array - ) : BaseAdapter() { - - private val inflater: LayoutInflater = LayoutInflater.from(mContext) - - override fun getCount(): Int { - return nameList.size - } - - override fun getItem(position: Int): Any { - return nameList[position] - } - - override fun getItemId(position: Int): Long { - return position.toLong() - } - - override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - var view = convertView - val holder: PopupWindowHolder - if (view == null) { - view = inflater.inflate(R.layout.item_map_popup, null) - holder = PopupWindowHolder() - holder.popupImageView = view.findViewById(R.id.popupImageView) - holder.popupTitleView = view.findViewById(R.id.popupTitleView) - view.tag = holder - } else { - holder = view.tag as PopupWindowHolder - } - holder.bindData(imageList[position], nameList[position]) - return view!! - } - } - inner class PopupWindowHolder { - lateinit var popupImageView: ImageView - lateinit var popupTitleView: TextView - - fun bindData(resId: Int, s: String?) { - popupImageView.setBackgroundResource(resId) - popupTitleView.text = s - } + lateinit var imageView: ImageView + lateinit var titleView: TextView } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 41c69e4..557f61e 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -24,7 +24,6 @@ import com.casic.qd.smartwell.widgets.GaoDeClusterMarkerView import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.pengxh.app.multilib.utils.SizeUtil import kotlinx.android.synthetic.main.activity_map.* import java.util.* import kotlin.collections.ArrayList @@ -83,9 +82,7 @@ } }) easyPopupWindow.setBackgroundDrawable(null) - val x: Int = rightOptionView.width - easyPopupWindow.width - SizeUtil.dp2px( - this, 0f - ) + val x: Int = rightOptionView.width - easyPopupWindow.width easyPopupWindow.showAsDropDown(rightOptionView, x, 0) } } diff --git a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt index 392d893..d48bb93 100644 --- a/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt +++ b/app/src/main/java/com/casic/qd/smartwell/widgets/EasyPopupWindow.kt @@ -16,9 +16,7 @@ */ class EasyPopupWindow(private val context: Context) : PopupWindow(context) { - private var clickListener: OnPopupWindowClickListener? = null - private var imageList: Array? = null - private var nameList: Array? = null + private lateinit var clickListener: OnPopupWindowClickListener init { width = (SizeUtil.getScreenWidth(context) * 0.3).toInt() @@ -29,78 +27,51 @@ contentView = LayoutInflater.from(context).inflate(R.layout.popup_option, null, false) } - fun setupPopupData(imageList: Array?, stringList: Array?) { - this.imageList = imageList - this.nameList = stringList + fun setupPopupData(imageArray: Array, titleArray: Array) { val popupListView = contentView.findViewById(R.id.popupListView) - setupListView(popupListView) - } + popupListView.adapter = object : BaseAdapter() { + private val inflater: LayoutInflater = LayoutInflater.from(context) - //给PopupWindow列表绑定数据 - private fun setupListView(popupListView: ListView) { - val adapter = PopupAdapter(context, imageList!!, nameList!!) - popupListView.adapter = adapter - popupListView.onItemClickListener = - AdapterView.OnItemClickListener { _, _, i, _ -> - if (clickListener != null) { - clickListener!!.onPopupClick(i) + override fun getCount(): Int = imageArray.size + + override fun getItem(position: Int): Any = imageArray[position] + + override fun getItemId(position: Int): Long = position.toLong() + + override fun getView(position: Int, convertView: View?, viewGroup: ViewGroup): View { + val view: View + val holder: PopupWindowHolder + if (convertView == null) { + view = inflater.inflate(R.layout.item_map_popup, null) + holder = PopupWindowHolder() + holder.imageView = view.findViewById(R.id.imageView) + holder.titleView = view.findViewById(R.id.titleView) + view.tag = holder + } else { + view = convertView + holder = view.tag as PopupWindowHolder } - dismiss() + holder.imageView.setBackgroundResource(imageArray[position]) + holder.titleView.text = titleArray[position] + return view } + } + popupListView.onItemClickListener = AdapterView.OnItemClickListener { _, _, i, _ -> + clickListener.onPopupClick(i) + dismiss() + } } interface OnPopupWindowClickListener { fun onPopupClick(position: Int) } - fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener?) { + fun setOnPopupWindowClickListener(windowClickListener: OnPopupWindowClickListener) { clickListener = windowClickListener } - inner class PopupAdapter( - mContext: Context?, - private val imageList: Array, - private val nameList: Array - ) : BaseAdapter() { - - private val inflater: LayoutInflater = LayoutInflater.from(mContext) - - override fun getCount(): Int { - return nameList.size - } - - override fun getItem(position: Int): Any { - return nameList[position] - } - - override fun getItemId(position: Int): Long { - return position.toLong() - } - - override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - var view = convertView - val holder: PopupWindowHolder - if (view == null) { - view = inflater.inflate(R.layout.item_map_popup, null) - holder = PopupWindowHolder() - holder.popupImageView = view.findViewById(R.id.popupImageView) - holder.popupTitleView = view.findViewById(R.id.popupTitleView) - view.tag = holder - } else { - holder = view.tag as PopupWindowHolder - } - holder.bindData(imageList[position], nameList[position]) - return view!! - } - } - inner class PopupWindowHolder { - lateinit var popupImageView: ImageView - lateinit var popupTitleView: TextView - - fun bindData(resId: Int, s: String?) { - popupImageView.setBackgroundResource(resId) - popupTitleView.text = s - } + lateinit var imageView: ImageView + lateinit var titleView: TextView } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_map_popup.xml b/app/src/main/res/layout/item_map_popup.xml index 727cf35..b6b55ca 100644 --- a/app/src/main/res/layout/item_map_popup.xml +++ b/app/src/main/res/layout/item_map_popup.xml @@ -6,12 +6,12 @@ android:padding="@dimen/dp_10">