Android studio写一段spinner实现下拉列表图片加文字的完整代码并逐句添加注释
时间: 2024-02-20 13:56:01 浏览: 140
好的,下面是实现下拉列表图片加文字的完整代码,并且附有详细注释:
1. 在布局文件中添加Spinner控件
```
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
```
2. 在strings.xml文件中添加下拉列表的选项文字和对应的图片资源
```
<string-array name="spinner_items">
<item>选项1</item>
<item>选项2</item>
<item>选项3</item>
</string-array>
<integer-array name="spinner_images">
<item>@drawable/image1</item>
<item>@drawable/image2</item>
<item>@drawable/image3</item>
</integer-array>
```
3. 在Java代码中设置Spinner的适配器
```
// 获取Spinner控件
Spinner spinner = findViewById(R.id.spinner);
// 获取下拉列表的选项文字和对应的图片资源
String[] spinnerItems = getResources().getStringArray(R.array.spinner_items);
TypedArray spinnerImages = getResources().obtainTypedArray(R.array.spinner_images);
// 创建一个自定义的适配器
SpinnerAdapter adapter = new SpinnerAdapter(this, spinnerItems, spinnerImages);
// 设置适配器
spinner.setAdapter(adapter);
```
4. 自定义适配器SpinnerAdapter类,用于将文字和图片绑定到下拉列表中的每一项
```
public class SpinnerAdapter extends ArrayAdapter<String> {
private Context mContext;
private String[] mSpinnerItems;
private TypedArray mSpinnerImages;
public SpinnerAdapter(Context context, String[] spinnerItems, TypedArray spinnerImages) {
super(context, R.layout.spinner_item);
mContext = context;
mSpinnerItems = spinnerItems;
mSpinnerImages = spinnerImages;
}
@Override
public int getCount() {
return mSpinnerItems.length;
}
@Override
public String getItem(int position) {
return mSpinnerItems[position];
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
// 获取自定义的下拉列表项视图
private View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.spinner_item, parent, false);
// 获取下拉列表项中的图片视图和文字视图
ImageView imageView = view.findViewById(R.id.spinner_image);
TextView textView = view.findViewById(R.id.spinner_text);
// 设置图片和文字
imageView.setImageResource(mSpinnerImages.getResourceId(position, -1));
textView.setText(mSpinnerItems[position]);
return view;
}
}
```
5. 创建spinner_item.xml布局文件,用于显示每一项的图片和文字
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/spinner_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/spinner_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
```
以上就是实现下拉列表图片加文字的完整代码,希望对你有帮助。
阅读全文