卜若的代码笔记-android系列-插件:带图片的Spinner插件
📅 2026/7/28 16:29:41
👁️ 阅读次数
📝 编程学习
1.该插件是我自己封装了一下,提高用户体验,具体解释请转以下:
https://blog.csdn.net/Zaajuan1150/article/details/81704865
2.插件封装:
package com.draw.depp.deeplearningdrawer.Plugins.ImageSpinnerPlugins; import android.content.Context; import android.view.View; import android.widget.AdapterView; import android.widget.SimpleAdapter; import android.widget.Spinner; import com.draw.depp.deeplearningdrawer.R; import com.draw.depp.deeplearningdrawer.Tool.CarColorUtil; import com.draw.depp.deeplearningdrawer.Tool.Debug; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ImageAdapter extends SimpleAdapter { public Context ct; public ImageAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); ct = context; } public static ImageAdapter createImageAdapter(Context ctt,List<Map<String, Object>> dataMap){ ImageAdapter adp = new ImageAdapter(ctt, dataMap, R.layout.spinner_2_example, new String[] { "image", "text" }, new int[] {R.id.colorview, R.id.textview }); return adp; } public static List<Map<String,Object>> mapList = new ArrayList<>(); public static ImageAdapter createImageAdapter(Context ct2){ List<Map<String,Object>> l2 = new ArrayList<>(); for (Map k: mapList ) { l2.add(k); } mapList.clear(); ImageAdapter i2 = createImageAdapter(ct2,l2); return i2; } public static void addSpinner(String textValue,Object obj){ Map<String,Object> m2 = new HashMap<String,Object>(); m2.put("text",textValue); m2.put("image",obj); mapList.add(m2); } }3.使用到的资源:R.layout.spinner_2_example
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center"> <ImageView android:id="@+id/colorview" android:layout_width="20dp" android:layout_height="20dp" android:layout_marginLeft="10dp" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center|left" android:paddingLeft="10dp" android:textSize="15dp" /> </LinearLayout>4.调用:
Spinner spinner = findViewById(R.id.type); ImageAdapter.addSpinner("广州",R.mipmap.ic_launcher); ImageAdapter.addSpinner("贵阳",R.mipmap.ic_launcher); ImageAdapter.addSpinner("华西",R.mipmap.ic_launcher); ImageAdapter adp = ImageAdapter.createImageAdapter(MainActivity.this); spinner.setAdapter(adp);5.预览:
6.关于怎么抽出text的值,一个自写解析器:
package com.draw.depp.deeplearningdrawer.Plugins.ImageSpinnerPlugins; public class ImageAdapterAnalyser { public String analyserValue = ""; public String[] analyserList ; public String text; public String image; public ImageAdapterAnalyser(String key){ this.analyserValue = key; char[] charArray = new char[key.length() - 2]; int index = 0; for (char a : analyserValue.toCharArray()){ if (a== '{'){ continue; } if(a == '}'){ continue; } charArray[index] = a; index++; } analyserValue = new String(charArray); analyserList = analyserValue.split(","); image = analyserList[0].split("=")[1].trim(); text = analyserList[1].split("=")[1].trim(); } }7.解析调用:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String content = parent.getItemAtPosition(position).toString(); Debug.Log(new ImageAdapterAnalyser(content).text); type = content; }
编程学习
技术分享
实战经验