Как добавить значение по умолчанию в спиннер в Android? - PullRequest
1 голос
/ 20 января 2012

Как добавить значение по умолчанию в спиннер, как selectone? Я хочу добавить одно значение в спиннер, которое видно на спинне, r, но когда я нажимаю на спиннер, все значения адаптера отображаются передо мной, а не 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);

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Если вы получаете значения счетчика динамически, то это способ добавить выбор сначала из значения счетчика:

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 голосов
/ 04 апреля 2013

вот решение, которое я придумал некоторое время назад. просто используйте этот адаптер вместо обычного:

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