当前位置: 首页 > 知识库问答 >
问题:

SpinnerAdapter中getView和getDropDownView的区别

琴献
2023-03-14

当您实现SpinnerAdapter时,您将获得getDropDownView,它与需要扩展BaseAdapter时的GetView有何不同。

共有1个答案

皇甫乐
2023-03-14

如果我们看下面的代码,我们在getView和GetDropDownView中有名称和值数组。

private void initView() {
    SpinnerDropDownAdapter sddadapter = new SpinnerDropDownAdapter(this);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, sddadapter.name);

    Spinner getViewSP = (Spinner) findViewById(R.id.getview_sp);
    getViewSP.setAdapter(adapter);

    Spinner getViewWDropDownSP = (Spinner) findViewById(R.id.getview_w_drop_down_sp);
    getViewWDropDownSP.setAdapter(sddadapter);
}

static class SpinnerDropDownAdapter extends BaseAdapter implements
        SpinnerAdapter {
    Context context;

    SpinnerDropDownAdapter(Context ctx) {
        context = ctx;
    }

    String[] name = { " One", " Two", " Three", " Four", " Five", " Six",
            " Seven", " Eight" };
    String[] value = { " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8" };

    @Override
    public int getCount() {
        return name.length;
    }

    @Override
    public String getItem(int pos) {
        // TODO Auto-generated method stub
        return name[pos];
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setText(name[position]);
        return text;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        TextView text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setText(value[position]);
        return text;
    }
}

如果未实现getDropDownView方法,则下拉弹出窗口将从GetView获取视图。因此,它将只显示名称。

 类似资料:
  • 我读了这个问题,使我明白了为什么必须在我的类中重写和: 问题是我在和中都有完全相同的代码,我认为这不是一个很好的解决方案。 是否每个使用的人都重复了这些代码?有人有更好的解决办法吗? 注意:我的代码工作得很好,所以不需要发布它;它只是看起来很奇怪,因为我有很多重复的代码。

  • 我在开发者android上找到了GridView guide:https://developer . Android . com/guide/topics/ui/layout/GridView . html "在getView()方法的末尾,传递给该方法的位置整数用于从mThumbIds数组中选择图像,该数组被设置为ImageView的图像资源。" 我对此感到困惑。 为什么我们每次都需要调用set

  • 返回当前视图的View Object: .fullCalendar('getView') 如果你想获取当前视图的Title或者start,end属性时可以使用,例如: var view = $('#calendar').fullCalendar('getView'); alert("The view's title is " + view.title); 官方英文文档:http://arshaw.

  • 这是我设置适配器的方式: 我正在寻找一个解决方案,从昨天开始,我已经阅读了所有关于StackOverflow的帖子,但没有一个与我的问题相匹配。所以我想知道,它是否可以来自LinkedHashMap<...> 编辑:这是我的布局r.layout.etat_piece_item

  • 问题内容: 你能解释一下方法吗。 我阅读了文档,它具有三个参数: :项目在我们想要其视图的项目的适配器数据集中的位置。 :如果可能,请重用旧视图。注意:使用前,应检查此视图是否为非null并具有适当的类型。如果无法转换此视图以显示正确的数据,则此方法可以创建一个新视图。 异构列表可以指定其视图类型的数量,以便此View始终具有正确的类型(请参见getViewTypeCount()和getItemV

  • 本文向大家介绍C# 中 &和&&的区别相关面试题,主要包含被问及C# 中 &和&&的区别时的应答技巧和注意事项,需要的朋友参考一下 答: &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).