簡體   English   中英

Android:如何為Spinner設置DropDown View Resource?

[英]Android : how to set DropDown View Resource for Spinner?

我為Spinner編寫了一個代碼,用於在Android中使用Spinner綁定美國各州的數組。 但問題是它在Spinner項目中顯示引用類型數據,請參見圖片

我添加android.R.layout.simple_spinner_dropdown_item但不知道在布局中添加什么。 我檢查了谷歌上的許多例子,他們添加了simple_spinner_dropdown_item,但我找不到在布局中添加的內容。 下面是輸出和代碼。 我想在列表中顯示狀態而不是這個垃圾數據。

在此輸入圖像描述

    Spinner spStates = new Spinner(this);
        spStates.setLayoutParams(new LayoutParams(screenWidth, LayoutParams.WRAP_CONTENT));

        final USAStates states[] = new USAStates[51];

        states[0] = new USAStates("Alabama", "AL");
        states[1] = new USAStates("Alaska", "AK");
        states[2] = new USAStates("Arizona", "AZ");
ArrayAdapter<USAStates> adapter = new ArrayAdapter<USAStates>(this, android.R.layout.simple_spinner_item, states);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spStates.setAdapter(adapter);
        spStates.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                USAStates d = states[position];
                Toast.makeText(getApplicationContext(), d.getStateAbrivation(), Toast.LENGTH_LONG).show();

            }

            public void onNothingSelected(AdapterView<?> parent) {
            }
        });




public class USAStates {
        private String _Statename;
        private String _StateAbrivation;

        public USAStates(String pStatename, String pStateAbrivation) {
            Statename(pStatename);
            StateAbrivation(pStateAbrivation);
        }
        public void Statename(String pStatename) {
            _Statename = pStatename;
        }
        public void StateAbrivation(String pStateAbrivation) {
            _StateAbrivation = pStateAbrivation;
        }

        public String getStatename() {
            return _Statename;
        }
        public String getStateAbrivation() {
            return _StateAbrivation;
        }
    }

不確定,只是在我的腦海中做這個,但是,在你的USAState類中覆蓋你的toString方法。因為它可能是適配器使用默認的toString()因此你的怪異文本顯示(我認為是類名USAStates類)

例如

@Override
public String toString(){
return _Statename
}

我最初接受了toString()答案,但后來發現這似乎不對。

我有一個帶有微調/下拉列表的ActionBar,我的適配器項目使用String.toString()值而不是我在自定義適配器中設置的標題。 添加toString()最初修復,直到我嘗試在同一布局中設置復合drawable。

我需要在我的適配器中覆蓋getDropDownView以及getView

必須覆蓋toString()是有症狀的,你沒有覆蓋適配器中的正確方法。

當重寫getDropDownView不得不重寫toString()時,一切都按預期工作。

以下帖子的答案是使用super方法實現的一種很好的方法: 交替旋轉顏色的項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM