这是我想要实现的,我能够实现这一点:
我能够将文本和图像添加到Spinner,但图像没有显示在文本旁边的下拉菜单中.它只显示了微调器的选定项目.
这是我的代码:
spinner_layout.xml
包含主Spinner的布局.
<?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="match_parent" android:orientation="vertical" > <Spinner android:id="@+id/mySpinner" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
spinner_value_layout.xml
Spinner中元素的布局.这将使用适配器充气.
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TableRow android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/spinnerTextView" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:id="@+id/spinnerImages" android:layout_width="match_parent" android:layout_height="match_parent" android:contentDescription="@string/app_name"/>" </TableRow> </TableLayout>
SpinnerActivity.java
package com.example.spinner; import android.app.Activity; import android.os.Bundle; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; import com.example.tempspinner.R; public class SpinnerActivity extends Activity { String[] textArray = { "clouds","mark","techcrunch","times" }; Integer[] imageArray = { R.drawable.clouds,R.drawable.mark,R.drawable.techcrunch,R.drawable.times }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.spinner_layout); TextView text = (TextView) findViewById(R.id.spinnerTextView); ImageView imageView =(ImageView)findViewById(R.id.spinnerImages); Spinner spinner = (Spinner) findViewById(R.id.mySpinner); SpinnerAdapter adapter = new SpinnerAdapter(this,R.layout.spinner_value_layout,textArray,imageArray); spinner.setAdapter(adapter); } }
SpinnerAdapter.java
package com.example.spinner; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.tempspinner.R; public class SpinnerAdapter extends ArrayAdapter<String> { private Context ctx; private String[] contentArray; private Integer[] imageArray; public SpinnerAdapter(Context context,int resource,String[] objects,Integer[] imageArray) { super(context,R.id.spinnerTextView,objects); this.ctx = context; this.contentArray = objects; this.imageArray = imageArray; } @Override public View getView(int position,View convertView,ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.spinner_value_layout,null); } TextView textView = (TextView) convertView.findViewById(R.id.spinnerTextView); textView.setText(contentArray[position]); ImageView imageView = (ImageView)convertView.findViewById(R.id.spinnerImages); imageView.setImageResource(imageArray[position]); return convertView; } }
解决方法
尝试这个..
public class SpinnerAdapter extends ArrayAdapter<String> { private Context ctx; private String[] contentArray; private Integer[] imageArray; public SpinnerAdapter(Context context,objects); this.ctx = context; this.contentArray = objects; this.imageArray = imageArray; } @Override public View getDropDownView(int position,ViewGroup parent) { return getCustomView(position,convertView,parent); } @Override public View getView(int position,ViewGroup parent) { return getCustomView(position,parent); } public View getCustomView(int position,ViewGroup parent) { LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View row = inflater.inflate(R.layout.spinner_value_layout,parent,false); TextView textView = (TextView) row.findViewById(R.id.spinnerTextView); textView.setText(contentArray[position]); ImageView imageView = (ImageView)row.findViewById(R.id.spinnerImages); imageView.setImageResource(imageArray[position]); return row; } }