jjzjj

android - 在 Spinner View Android 中显示最后一项

coder 2024-07-04 原文

我正在尝试从数组填充微调器。一切正常,但是当我单击微调器时, View 会将我带到数组的最后一项。所以我需要向上滚动才能看到第一项。

我想从头开始而不是从头开始。请查看我的代码。我在我的 XML 中使用了 android:spinnerMode = "dialog"

我的 spinner1 正在 View 中显示最后的项目,但所有项目都按正确的顺序出现。

public class Pinbyplace extends AppCompatActivity {

Spinner spinner1, spinner2, spinner3;
ArrayAdapter<String> adapter1, adapter2, adapter3;

public String[] state = {"Andaman and Nicobar Islands", "Andhra Pradesh", "Arunachal Pradesh", "Assam",
        "Bihar", "Chandigarh", "Chhattisgarh", "Dadar and Nagar Haveli",
        "Daman and Diu", "Delhi", "Goa", "Gujarat", "Haryana", "Himachal Pradesh",
        "Jammu and Kashmir", "Jharkhand", "Karnataka", "Kerala", "Lakshadeep",
        "Madya Pradesh", "Maharashtra", "Manipur", "Meghalaya", "Mizoram", "Nagaland",
        "Odhisa", "Pondicherry","Punjab", "Rajasthan", "Sikkim", "Tamil Nadu",enter code here
        "Tripura", "Uttaranchal", "Uttar Pradesh", "West Bengal", "Select State"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pincode_place);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    spinner3 = (Spinner) findViewById(R.id.spinner3);

    adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, state) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            if (position == getCount()) {
                ((TextView)v.findViewById(android.R.id.text1)).setText("");
                ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount()));
            }
            return v;
        }

        @Override
        public int getCount() {
            return super.getCount()-1;
        }
    };

    //adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(adapter1);
    spinner1.setSelection(adapter1.getCount());

    adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            if (position == getCount()) {
                ((TextView)v.findViewById(android.R.id.text1)).setText("");
                ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount()));
            }
            return v;
        }

        @Override
        public int getCount() {
            return super.getCount() - 1;
        }
    };

    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter2.add("Item 1");
    adapter2.add("Item 2");
    adapter2.add("Select District");

    spinner2.setAdapter(adapter2);
    spinner2.setSelection(adapter2.getCount());

    adapter3 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            if (position == getCount()) {
                ((TextView)v.findViewById(android.R.id.text1)).setText("");
                ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount()));
            }
            return v;
        }

        @Override
        public int getCount() {
            return super.getCount()-1;
        }
    };

    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter3.add("Item 1");
    adapter3.add("Item 2");
    adapter3.add("Select Place");

    spinner3.setAdapter(adapter3);
    spinner3.setSelection(adapter3.getCount());

}
 }

见下图:

更新:我为此找到了一个更好、更简单的解决方案..

public class Pinbyplace extends AppCompatActivity {

Spinner spinner_state, spinner_district, spinner_place;
HintArrayAdapter hintAdapter_state, hintAdapter_district, hintAdapter_place;

public String[] state = {"Select State", "Andaman and Nicobar Islands","Andhra Pradesh",
        "Arunachal Pradesh","Assam","Bihar", "Chandigarh","Chhattisgarh",
        "Dadra and Nagar Haveli","Daman and Diu","Delhi", "Goa","Gujarat","Haryana",
        "Himachal Pradesh","Jammu and Kashmir","Jharkhand", "Karnataka","Kerala",
        "Lakshadweep","Madhya Pradesh","Maharashtra","Manipur", "Meghalaya","Mizoram",
        "Nagaland","Odisha","Puducherry","Punjab","Rajasthan", "Sikkim","Tamil Nadu",
        "Telangana","Tripura","Uttar Pradesh","Uttarakhand","West Bengal"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pincode_place);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

    spinner_state = (Spinner) findViewById(R.id.spinner1);
    spinner_district = (Spinner) findViewById(R.id.spinner2);
    spinner_place = (Spinner) findViewById(R.id.spinner3);

    hintAdapter_state = new HintArrayAdapter<>(getApplicationContext(), 0);
    hintAdapter_state.addAll(state);
    spinner_state.setAdapter(hintAdapter_state);

    spinner_state.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(position > 0) {
                spinner_state.setSelection(position);
                String state_name = (String) spinner_state.getSelectedItem();
                Toast.makeText(getApplication(), state_name, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    hintAdapter_district = new HintArrayAdapter<>(getApplicationContext(), 0);
    hintAdapter_district.add("Select Distrcit");
    spinner_district.setAdapter(hintAdapter_district);

    spinner_district.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(position > 0) {
                spinner_district.setSelection(position);
                String district_name = (String) spinner_district.getSelectedItem();
                Toast.makeText(getApplication(), district_name, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    hintAdapter_place = new HintArrayAdapter<>(getApplicationContext(), 0);
    hintAdapter_place.add("Select Place");
    spinner_place.setAdapter(hintAdapter_place);

    spinner_place.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(position > 0) {
                spinner_place.setSelection(position);
                String place_name = (String) spinner_place.getSelectedItem();
                Toast.makeText(getApplication(), place_name, Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
}

private class HintArrayAdapter<T> extends ArrayAdapter<T> {

    Context mContext;

    public HintArrayAdapter(Context context, int resource) {
        super(context, resource);
        this.mContext = context;
    }

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

        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
        TextView texview = (TextView) view.findViewById(android.R.id.text1);
        texview.setTextColor(Color.BLACK);
        texview.setHintTextColor(Color.GRAY);

        if(position == 0) {
            texview.setText("");
            texview.setHint(getItem(position).toString()); //"Hint to be displayed"
        } else {
            texview.setText(getItem(position).toString());
        }

        return view;
    }

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

        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View view;

        if(position == 0){
            view = inflater.inflate(R.layout.spinner_hint_list_item_layout, parent, false); // Hide first row
        } else {
            view = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
            TextView texview = (TextView) view.findViewById(android.R.id.text1);
            texview.setTextColor(Color.BLACK);
            texview.setText(getItem(position).toString());
        }

        return view;
    }
}
}

最佳答案

 adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter3.add("Item 1");
    adapter3.add("Item 2");
    adapter3.add("Select Place");

    spinner3.setAdapter(adapter3);
    spinner3.setSelection(adapter3.getCount());

更改为

spinner3.setSelection(0);

因为 spinner3.setSelection(adapter3.getCount());表示 Spinner Postion 是您的数组大小。所以 Spinner Goto Last Index ......

关于android - 在 Spinner View Android 中显示最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32549946/

有关android - 在 Spinner View Android 中显示最后一项的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  4. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  5. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  6. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  7. ruby-on-rails - 在 Flash 警报 Rails 3 中显示错误消息 - 2

    如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]

  8. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  9. ruby-on-rails - Rails 4 WYSIWYG Bootsy 不显示格式 - 2

    我刚刚按照thebootsygempage上的安装说明进行操作在我保存并查看帖子内容之前,一切看起来都不错。这是输出在View中的样子:HeaderSubhead:似乎没有呈现任何html格式,因为它被引号或类似的东西转义了-其他人有这个问题吗?我没有在github页面或SO上看到任何问题来指出我正确的方向。除了遵循gem安装说明之外,我还没有做任何事情,但也许我错过了什么或者只是犯了一个愚蠢的错误。如果你还有什么想知道的,请尽管问。干杯 最佳答案 你需要有这样的东西,转义html: 关

  10. ruby - 为什么当我调用类的实例方法时,初始化不显示为方法? - 2

    我正在写一篇关于在Ruby中几乎一切都是对象的博客文章,我试图通过以下示例来展示这一点:classCoolBeansattr_accessor:beansdefinitialize@bean=[]enddefcount_beans@beans.countendend所以从类中我们可以看出它有4个方法(当然,除非我错了):它可以在创建新实例时初始化一个默认的空bean数组它可以计算它有多少个bean它可以读取它有多少个bean(通过attr_accessor)它可以向空数组写入(或添加)更多bean(也通过attr_accessor)但是,当我询问类本身它有哪些实例方法时,我没有看到默认

随机推荐