2010-08-08 26 views
0

我有一個自定義微調器(自定義格式)。它工作正常,並顯示所選數組項的結果。帶有我的數據的字符串數組稱爲mydata []。Android自定義微調器 - 可用的結果是什麼?

我想對結果做些什麼 - 我嘗試了幾個小時的修改,但似乎我不知道容器是用於選定結果的 - 它只是自動顯示。 mNumber引用類中的一個案例選擇(它的結果是基於傳入的內容)。

我的問題(S) - 指的是*我怎麼在這裏使用*所示代碼的最後一行
1.什麼是對結果的容器?
2.如何訪問和語法?

以下是代碼:
謝謝!

**[declared in onCreate]** 
    Spinner spinner = (Spinner) findViewById(R.id.Spinner01);  
    MySpinnerAdapter adapter = new MySpinnerAdapter(this, R.layout.mspinner, R.id.text,mydata); 
    spinner.setAdapter(adapter); 

**[declared outside of onCreate]** 
    @SuppressWarnings("unchecked") 
    private class MySpinnerAdapter extends ArrayAdapter{ 
    public MySpinnerAdapter(Context context, int resource, int textViewResourceId, String[] objects) { 
    super(context, resource, textViewResourceId, objects); 
    final TextView woof =(TextView)findViewById(R.id.TextView07); 
    woof.setText(String.valueOf(dogday.mNumber(*** WHAT DO I USE HERE ? ***))); 
    } 
    } 

編輯 - FOR MY響應COMMONSWARE(一個評論框太多字符)。

謝謝。當知道某些東西被選中時,你知道顯示在微調器中的結果(默認情況下) - 這就是我需要的數據。我想用它作爲調用的參數。

用戶選擇在所說的紡絲器的東西 - 所選項目將被用於使在類方法(dogDay),它用於mNumber一個數據參數(數據)一些選擇並返回結果(就像一個功能)。

我想做一些數學計算與結果。首先,我想顯示回來(現在),所以我使用dogDay.mNumber(數據)作爲woof.text的參數。

我的問題是,如何獲得這塊數據的東西在微調選擇的用戶)的? Spinner如何知道要爲我的選擇展示什麼 - 這就是我想要的?我試着用getSelectedItem之類的東西(不管它是什麼 - 我現在不記得了),但它崩潰了。

他們是一種更簡單的方式來自定義格式的微調?(並得到數據)我搜索嗨和低信息,發現只有一個適用於Android 1.5 /更高版本(我想要所有黑色背景和紅色文本的微調 - 我可以通過我的代碼中顯示的方式使用自定義佈局)。

謝謝 - 我有點囉嗦!

EDITED - 完整代碼 下面是自定義微調器和您建議的調用的完整代碼。正如我所提到的,我已經嘗試過了 - 它只顯示列表中的第一項 - 從來沒有選擇過。我用getSelectedItem的結果作爲論據串......我試圖從內部和外部的適配器...

package com.bt.junk; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class MyMaincode extends Activity { 
private static String mydata[] = {"one", "two", "three"}; 

int poop; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
// DECLARATIONS ------------------------------------------------  
    Spinner spinner = (Spinner) findViewById(R.id.Spinner01); 

    MySpinnerAdapter adapter = new MySpinnerAdapter(
     this,R.layout.custom_spinner_row,R.id.text, mydata); 

    spinner.setAdapter(adapter); 

    poop = spinner.getSelectedItemPosition(); 

}//end onCreate ******************************************** 

// METHODS, CLASSES, etc --------------------------------------- 
@SuppressWarnings("unchecked") //<-- I added that 
private class MySpinnerAdapter extends ArrayAdapter{ 
    public MySpinnerAdapter(Context context, int resource, 
        int textViewResourceId, String[] objects) { 
     super(context, resource, textViewResourceId, objects);     

     final TextView sayWhat = (TextView) findViewById(
              R.id.TextView01); 
     sayWhat.setText(String.valueOf(mydata[poop])); 

    }//end MySpinnerAdapter 
}//end class MySpinnerAdapter 
}//end activity 

回答

1

你的問題變得毫無意義,我。我假設「我想用這個結果做一些事情」意思是「我想找出所選項目在陣列中的位置」。如果這個假設是正確的,你可以通過調用getSelectedItemPosition()得到Spinner的選定位置。當Spinner第一次出現時,這將是0,除非您自己更改位置。

你的代碼也很奇怪,恕我直言。 ArrayAdapter的構造函數不應該試圖操作小部件。

+0

請參閱上面的編輯 - 謝謝 – headscratch 2010-08-09 15:56:27

+0

@ headscratch:我已經回答了您的問題,包括編輯中的大部分內容。使用'getSelectedPosition()'獲取選擇的索引。然後,使用你的數組('mydata')來獲取與該位置相關的數據。請注意,你不能從適配器**的構造函數調用它,因爲選擇還沒有設置,因爲'Spinner'甚至沒有適配器。 – CommonsWare 2010-08-09 16:04:50

+0

請參閱上面的完整示例代碼/評論。謝謝 – headscratch 2010-08-09 17:05:53