这怎么可能创建的图像而不是文字微调? [英] How is it possible to create a spinner with images instead of text?

查看:83
本文介绍了这怎么可能创建的图像而不是文字微调?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于code波纹管,是有可能有图像而不是文字的阵列行星?

 微调S =(微调)findViewById(R.id.spinner);
    ArrayAdapter适配器= ArrayAdapter.createFromResource(
            对此,R.array.planets,android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s.setAdapter(适配器);
 

 <字符串名称=planet_prompt>选择一个星球< /串>
    <字符串数组名=行星>
        <项目>水星< /项目>
        <项目>金星< /项目>
        <项目>地球LT; /项目>
        <项目>火星< /项目>
        <项目>木星< /项目>
        <项目>土星< /项目>
        <项目>天王星< /项目>
        <项目>海王星< /项目>
    < /字符串数组>
 

解决方案

是的,它是看一下下面的code:


 数据数组

//存储在图像数据库的图标
    私有静态整数[] imageIconDatabase = {R.drawable.ball,
            R.drawable.catmouse,R.drawable.cube,R.drawable.fresh,
            R.drawable.guitar,R.drawable.orange,R.drawable.teapot};

    //存储图像数据库名称
    私有String [] imageNameDatabase = {球,catmouse,魔方,新鲜的,
            吉他,橙色,茶壶};
 


包含HashMap的创建列表

 私人无效initializeImageList(){
        // TODO自动生成方法存根
        的for(int i = 0; I< imageNameDatabase.length;我++){
            图=新的HashMap<字符串,对象>();

            map.put(姓名,imageNameDatabase [I]);
            map.put(图标,imageIconDatabase [I]);
            spinnerList.add(图)
        }
        ImageView的ImageView的=新ImageView的(这一点);
        imageView.setBackgroundResource((spinnerList.get(0)获得(图标));
        spinnerList.get(0)获得(姓名);
    }
 


指定微调器适配器

 公共无效createAddDialog(){
        // 去做
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        的setContentView(R.layout.list_editoradd_dialog);

        微调旋转=(微调)findViewById(R.id.spinnerAddImageList);
        CustomSpinnerAdapter适配器=新CustomSpinnerAdapter(这一点,
                spinnerData,R.layout.spinner_view,新的String [] {姓名,
                        图标},新的INT [] {R.id.imageNameSpinner,
                        R.id.imageIconSpinner});
        spin.setAdapter(适配器);
    }
 


以上使用的适配器下面给出..

 包com.tcs.CustomListViewGeneration;

进口的java.util.HashMap;
进口的java.util.List;
进口的java.util.Map;

进口android.content.Context;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.ImageView;
进口android.widget.SimpleAdapter;
进口android.widget.TextView;

类CustomSpinnerAdapter扩展SimpleAdapter {

    LayoutInflater mInflater;
    私人名单,LT ;?扩展地图<字符串,>> dataRecieved;

    公共CustomSpinnerAdapter(上下文的背景下,列表和LT ;?扩展地图<字符串,>>的数据,
            INT资源的String []从,INT []键){
        超(背景下,数据,资源,从,到);
        dataRecieved =数据;
        mInflater = LayoutInflater.from(上下文);
    }

    @燮pressWarnings(未登记)
    公共查看getView(INT位置,查看convertView,ViewGroup中父){
        如果(convertView == NULL){
            convertView = mInflater.inflate(R.layout.spinner_view,
                    空值);
        }
    // HashMap的<字符串,对象>数据=(HashMap的<字符串,对象>)的getItem(位置);
        ((TextView中)convertView.findViewById(R.id.imageNameSpinner))
                .setText((字符串)dataRecieved.get(位置)获得(姓名));
        ((ImageView的)convertView.findViewById(R.id.imageIconSpinner))
                .setBackgroundResource(dataRecieved.get(位置)获得(图标)));
        返回convertView;
    }
}
 


Given the code bellow, is it possible to have images instead of text in the array planets?

    Spinner s = (Spinner) findViewById(R.id.spinner);    
    ArrayAdapter adapter = ArrayAdapter.createFromResource(            
            this, R.array.planets, android.R.layout.simple_spinner_item);    
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
    s.setAdapter(adapter);

and

    <string name="planet_prompt">Choose a planet</string>
    <string-array name="planets">        
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>        
        <item>Mars</item>        
        <item>Jupiter</item>        
        <item>Saturn</item>        
        <item>Uranus</item>        
        <item>Neptune</item>    
    </string-array>    

解决方案

Yes it is look at the code below:


array of data

// 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" };


creating List of hashmaps

private void initializeImageList() {
        // TODO Auto-generated method stub
        for (int i = 0; i < imageNameDatabase.length; i++) {
            map = new HashMap<String, Object>();

            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);
    }


the adapter used above is as given below..

package com.tcs.CustomListViewGeneration;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

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;
    }
}


这篇关于这怎么可能创建的图像而不是文字微调?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆