2012-01-20 23 views
1

selectoneのようなスピナーにデフォルト値を追加する方法は? spinneで表示されるスピナーに1つの値を追加したいが、スピナーをクリックすると、アダプターのすべての値が私の目の前に表示されますが、デフォルト値のselectoneは表示されません。どのようにアンドロイドでスピナーのデフォルト値を追加するのですか?

try { 

     json = new JSONObject(Status); 

     // nameArray = json.names(); 

     valArray = json.getJSONArray("Machines"); 



    } catch (JSONException e) { 



     e.printStackTrace(); 

    } 



    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 

      android.R.layout.simple_spinner_item); 

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



    for (int i = 0; i < valArray.length(); i++) { 

     try { 

      String machineName = valArray.getJSONObject(i) 

        .getString("MachineName").toString(); 

      // Integer machineID = Integer.parseInt(valArray.getJSONObject(

      // 0).getString("MachineID")); 

      // Entities.machineID = machineID; 

      adapter.add(machineName); 

     } catch (JSONException e) { 



      e.printStackTrace(); 

     } 

    } 



    sp_Machine.setAdapter(adapter); 

ありがとうございます。

+0

もう少し明確にすることはできますか?あなたの質問を具体的にお答えください –

+0

基本的に私は、例えば、国のスピナーとそのスピナーのデフォルトアイテムのように、選択された国のアイテムを選択します。スピナーのリストにはありません。 –

答えて

3

あなたが動的にスピナーの値を取得している場合、これはスピナー値の最初の選択を追加する方法です。以下に示すように

try{ 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://10.0.2.2/android/classname_spinner.php"); 
    try{ 
     ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
     String responseBody = httpclient.execute(httppost,responseHandler); 
     JSONObject json = new JSONObject(responseBody); 

     JSONArray jArray = json.getJSONArray("output"); 
     arr = new String[jArray.length()+1]; 
     arr[0] = "-select-"; 
     for(int i=0;i<jArray.length();i++){ 
      JSONObject json_data = jArray.getJSONObject(i); 
      String sclass = json_data.getString("spinner"); 
      arr[i+1] = sclass; 
     } 
    }catch (Exception e) { 
     Log.e("log_tag","Error parsing classname data"+e.toString()); 
    } 
}catch (Exception e) { 
    Log.e("log_tag","Request failed"+e.toString()); 
} 

は今スピナーにあなたが得た値を追加します。今

classSpinner = (Spinner) findViewById(R.id.editClass); 
    ArrayAdapter<String> classNameAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,arr); 
    classNameAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    classSpinner.setAdapter(classNameAdapter); 

その後、同じようにクリックイベントに、あなたの中に書き、スピナーは、クリックイベントにに戻ってそのデフォルト値に取得したい:

reset.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       classSpinner.setSelection(0); 
      } 
     }); 

これはあなたに役立つことを願っています。

+0

私のデータは動的にwebserviceから来ています –

+1

kその後、私は自分の答えを更新していると思いますが、私はもっと具体的にできるようにコードを追加してurの質問を更新します... –

+0

私は私の質問を編集しましたスピナーを無効にしてください –

0

ここで私はしばらく前に思いついた解決策です。通常のアダプタの代わりにこのアダプタを使用してください:

package perelman.yuval.carsapp; 
import java.util.ArrayList; 
import java.util.List; 
import android.content.Context; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
public class SpinnerDualAdapter<T> extends ArrayAdapter<T> { 
private ArrayAdapter<String> myAdapter; 
private boolean isPromptAdapter; 
private SpinnerDualAdapter(Context context, int textViewResourceId, 
     List<T> objects) { 
    super(context, textViewResourceId, objects); 
    // TODO Auto-generated constructor stub 
} 

public SpinnerDualAdapter(Context context, 
     int textViewResourceIdForDropdownView, 
     int textViewResourceIdForDefaultView, List<T> objects, 
     String defaultValue) { 
    this(context, textViewResourceIdForDropdownView, objects); 
    ArrayList<String> myArrayList = new ArrayList<String>(); 
    myArrayList.add(defaultValue); 
    myAdapter = new ArrayAdapter<String>(context, 
      textViewResourceIdForDefaultView, myArrayList); 
    isPromptAdapter=true; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
     if(isPromptAdapter){ 
      isPromptAdapter=false; 
      return myAdapter.getView(position, convertView, parent); 
     } 
     TextView tv=new TextView(getContext()); 
     tv.setText(this.getItem(position).toString()); 
    return tv; 
} 
@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent){ 
    isPromptAdapter=false; 
    return(super.getDropDownView(position, convertView, parent)); 
} 
} 
関連する問題