2012-01-20 47 views
1

如何添加微调器中的默认值,如selectone?我想在spinner上可见的微调器中添加一个值,但是当我点击微调器时,适配器的所有值都会显示在我的前面,但不会选择这是默认值。如何在android中的微调器中添加默认值?

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

你能更清楚一点吗?请详细说明你的问题 – 2012-02-27 18:37:46

+0

基本上我想要默认项目在微调选择为SelectOne例如: - 像国家的微调和默认项目在该微调选择国家被选中,当活动加载后,点击微调选择任何项目选择国家在Spinner列表中不存在。 –

回答

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然后,我想我必须更新我的答案,但更新你的问题,通过添加代码,以便我可以更具体... – 2012-02-28 14:36:46

+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)); 
} 
}