当前位置: 首页 > 面试题库 >

微调器中的SimpleAdapter,文本和图像

苏彦君
2023-03-14
问题内容

我有一个小问题。好吧,让我先说一下我要完成的工作。我有一个微调器,用于从存储的数组中拉出字符串。像这样,您无需阅读它:

ArrayAdapter<?> healthadapter = ArrayAdapter.createFromResource(this, R.array.health, android.R.layout.simple_spinner_item);
mHealthSpin = (Spinner) findViewById(R.id.health_spin);
healthadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mHealthSpin.setAdapter(healthadapter);

简单且几乎足够。我想将一个图像添加到Spinner.RadioButton是没有必要的。所以Spinner应该弹出并有一个列表:

文字*图片*
TEXT2 * IMAGE *
TEXT3 * IMAGE *

到目前为止,我已经习惯了SimpleAdapter. 这是问题所在!

出现文字,但不出现图像。

这是代码:

public class stageadapter extends SimpleAdapter {

    private Context localContext;
    private ArrayList<HashMap<String, Object>> localList;

    public stageadapter(Context context, ArrayList<HashMap<String, Object>> list, int resource, String[] from, int[] to) {
        super(context, list, resource, from, to);
        localContext = context;
        localList = list;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (null == convertView) {
            LayoutInflater inflater = (LayoutInflater) localContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.stagerow, null);
        }
        TextView name = (TextView) convertView.findViewById(R.id.stage_name);
        name.setText((String) localList.get(position).get("Name"));
        ImageView icon = (ImageView) convertView.findViewById(R.id.stage_icon);

        icon.setImageResource(R.drawable.icon);

        return convertView;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if (null == convertView) {
            LayoutInflater inflater = (LayoutInflater) localContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.stagerow, null);
        }
        TextView name = (TextView) convertView.findViewById(R.id.stage_name);
        name.setText((String) localList.get(position).get("Name"));
        ImageView icon = (ImageView) convertView.findViewById(R.id.stage_icon);
        icon.setImageResource(R.drawable.icon);

        return convertView;
    }
}

我计划使用一条switch语句为每个名称设置不同的图像。但是我停在这里,直到可以显示任何图像。

我怎么打电话:

ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("Name", "One");
    map.put("Icon", R.drawable.icon);
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("Name", "Two");
    map.put("Icon", R.drawable.icon);
    list.add(map);

    mStageSpin = (Spinner) findViewById(R.id.stage_spin);
    stageadapter adapter = new stageadapter(getApplicationContext(), list, R.layout.stagerow, new String[]{"Name", "Icon"}, new int[]{R.id.stage_name, R.id.stage_icon});
    mStageSpin.setAdapter(adapter);

对我来说答案是在评论中。


问题答案:

删除以下行-混淆适配器:

healthadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("Name", "One");
        map.put("Icon", R.drawable.icon);
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("Name", "Two");
        map.put("Icon", R.drawable.icon);
        list.add(map);

        Spinner spin = (Spinner) findViewById(R.id.spin);
        myAdapter adapter = new myAdapter(getApplicationContext(), list,
                R.layout.list_layout, new String[] { "Name", "Icon" },
                new int[] { R.id.name, R.id.icon });

        spin.setAdapter(adapter);

    }

    private class myAdapter extends SimpleAdapter {

        public myAdapter(Context context, List<? extends Map<String, ?>> data,
                int resource, String[] from, int[] to) {
            super(context, data, resource, from, to);

        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
                convertView = getLayoutInflater().inflate(R.layout.list_layout,
                        null);
            }

            HashMap<String, Object> data = (HashMap<String, Object>) getItem(position);

            ((TextView) convertView.findViewById(R.id.name))
                    .setText((String) data.get("Name"));
            ((ImageView) convertView.findViewById(R.id.icon))
                    .setImageResource(R.drawable.icon);

            return convertView;
        }

    }


 类似资料:
  • 我有以下MainActivity.java文件当前正在Eclipse上运行。 我的目的是获取用户输入和微调器值,并形成一个网址 到,但错误仍然存在。 我怎么摆脱它?一般来说,这段代码是否有效?

  • 我有文本框,可以输入值(0, 1, 2, 3, ...)。我可以转换为文本框使用JQuery,但这与我的一些JS库冲突,所以我想转换文本框使用ExtJs3微调,我该怎么办?请给一些示例代码如何将文本框转换为微调。

  • 问题内容: 在创建我自己的SimpleAdapter对象之前,因为我想更改行的颜色,所以我只是使用new SimpleAdapter(…)。现在,我正在使用自己的自定义SimpleAdapter,行颜色正在更改,但是我的文本没有得到更新。我已经调用了adapter.notifyDataSetChanged(),但它仍只显示示例文本“ TextView”。正如我所说,当我没有创建自己的适配器时,一切

  • 问题内容: 在您的SQL数据库中存储大量文本(例如html页面)是个好主意吗?还是将其作为html文件存储在文件系统中是一个更好的主意? 图像也是如此-将图像数据存储在数据库中还是将其放置在磁盘上更好? 例如,存储大量数据会导致我出现性能问题吗?每种存储方法的优缺点是什么? 就数据的大小而言,在这种情况下,我正在寻找HTML和图像的“几页”区域,这些图像和图像的大小小于500kb(不过可能要小得多

  • 我正试图让一个旋转器(2)改变另一个旋转器(1)的内容。 我当前在第二个微调器的数组适配器中遇到错误“错误:(28,57)错误:无法推断数组适配器的类型参数 这是我的代码: 任何帮助都将不胜感激。

  • 如何反应本机文本和图像响应? 我只知道Flexbox可以使布局响应,但似乎不能应用于文本和图像。 e、 g.让我的文字和图像在iphone 4s中变小,在iphone6中变大 谢谢