在微调器项中显示列表数组以替换可绘制图像如何实现

时间:2010-08-20 10:26:06

标签: android

我在spinner项目列表数组中的某些应用程序中使用微调器此文本替换为可绘制图像如何实现

personalinformation = (Spinner) findViewById(R.id.SpinnerCategory);
ArrayAdapter<?> adapterDefaultpersonal = ArrayAdapter.createFromResource(Animals.this, R.array.Animalinformation, android.R.layout.simple_spinner_item);

adapterDefaultpersonal.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
personalinformation.setAdapter(adapterDefaultpersonal); 

如何在可绘制图像中替换R.array.Animalinformation数组列表项?

1 个答案:

答案 0 :(得分:1)

是的,看下面的代码.. 数据数组

//stores the image database icons 
 private static Integer[] imageIconDatabase = { R.drawable.ball, R.drawable.catmouse,   R.drawable.cube, R.drawable.fresh, R.drawable.guitar, R.drawable.orange, R.drawable.teapot };

//stores the image database names 
 private String[] imageNameDatabase = { "ball", "catmouse", "cube", "fresh", "guitar", "orange", "teapot" };

创建散列图列表

private void initializeImageList() {
// TODO Auto-generated method stub 
ArrayList<HashMap<String, Object>> spinnerList = new ArrayList<HashMap<String,Object>>();
for (int i = 0; i < imageNameDatabase.length; i++) {
    HashMap map = new HashMap();
    map.put("Name", imageNameDatabase[i]);         
    map.put("Icon", imageIconDatabase[i]);         
    spinnerList.add(map);     
    }     
ImageView imageView = new ImageView(this);     
imageView.setBackgroundResource((spinnerList.get(0).get("Icon"));     
spinnerList.get(0).get("Name"); 
}

// assigning spinner to adapter

public void createAddDialog() { // TODO
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.list_editoradd_dialog);

    Spinner spin = (Spinner) findViewById(R.id.spinnerAddImageList);
    CustomSpinnerAdapter adapter = new CustomSpinnerAdapter(this, spinnerData, R.layout.spinner_view, new String[] { "Name", "Icon" }, new int[] { R.id.imageNameSpinner, R.id.imageIconSpinner });
    spin.setAdapter(adapter);
}

上面使用的适配器如下所示..

class CustomSpinnerAdapter extends SimpleAdapter {

LayoutInflater mInflater;
private List<? extends Map<String, ?>> dataRecieved;

public CustomSpinnerAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
    super(context, data, resource, from, to);
    dataRecieved = data;
    mInflater = LayoutInflater.from(context);
}

@SuppressWarnings("unchecked") 
public View getView(int position, View convertView, ViewGroup parent) 
{     
    if (convertView == null) { 
        convertView = mInflater.inflate(R.layout.spinner_view,null);
        } 
HashMap<String, Object> data = (HashMap<String, Object>) getItem(position);    
((TextView) convertView.findViewById(R.id.imageNameSpinner)).setText((String) dataRecieved.get(position).get("Name"));
((ImageView) convertView.findViewById(R.id.imageIconSpinner)).setBackgroundResource(dataRecieved.get(position).get("Icon")));
return convertView; 
}
}