从 json 获取数据时,微调器默认不选择

Spinner default no selection when data fetched from json

你好我问了这个问题before.But我没有找到合适的解决方案。我有一个微调器,它将从 json.After 加载数据,从微调器中选择任何项目,然后它会 post 第零 post 值再次到另一个 API.Everyting 作品 fine.But 我的问题是我默认不选择 spinner.I 添加一个名为 "no selection" 的字符串到第零位置,但它不是 working.Please 帮助我实现这个。

我的微调器

   void getList(){

            final Common common = new Common();
            int a= 100;
            String webService = "API/Employee/GetList";
            String postData = "";
            String[] dataColumns = {"ID",//0
                    "Code",//1
                    "Name" ,//2

            };
            Runnable postThread = new Runnable() {
                @Override
                public void run() {
                    //Spinner
                    int a= 0;
                    ArrayList<String> Names = new ArrayList<String>();
                    for (int i=0;i<common.dataArrayList.size();i++){
                        String[] data=new String[3];
                        data[0]=common.dataArrayList.get(i)[0];
                        data[1]=common.dataArrayList.get(i)[1];
                        data[2]=common.dataArrayList.get(i)[2];

                        List.add(data);
                    }
                    for(int i=0;i<List.size();i++){
                        Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
                    }
                    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Insert.this, R.layout.item_spinner_black, Names);
                    dataAdapter.setDropDownViewResource(R.layout.item_spinner);
                    Spinner =(Spinner)findViewById(R.id.spinner);

//I added below code but it not working 

    //              dataAdapter.insert(getString(R.string.selectemp), 0);
                    Spinner.setAdapter(dataAdapter);


                }

我的Post数据

  postData="{\"Title\":\""+title.getText().toString()
            +"\",\"Spinnervalue\":\""+List.get(Spinner.getSelectedItemPosition())[0]}

我觉得对你有帮助。

 ArrayList<String> Names = new ArrayList<String>();
    Names.add("no selection");
   for (int i=0;i<common.dataArrayList.size();i++){
                        String[] data=new String[3];
                        data[0]=common.dataArrayList.get(i)[0];
                        data[1]=common.dataArrayList.get(i)[1];
                        data[2]=common.dataArrayList.get(i)[2];

                        List.add(data);
                    }
                    for(int i=0;i<List.size();i++){
                        Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
                    }

问题出在您的适配器初始化上。所以当你以后添加数据时,它不会有预选项目。

编辑:

我重新排序了您当前的代码。

void getList(){
            final Common common = new Common();
            int a= 100;
            String webService = "API/Employee/GetList";
            String postData = "";
            String[] dataColumns = {"ID",//0
                    "Code",//1
                    "Name" ,//2

            };
            Runnable postThread = new Runnable() {
                @Override
                public void run() {
                    //Spinner
                    int a= 0;
                    ArrayList<String> Names = new ArrayList<String>();
                    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Insert.this, R.layout.item_spinner_black, Names);
                    dataAdapter.setDropDownViewResource(R.layout.item_spinner);
                    Spinner =(Spinner)findViewById(R.id.spinner);

//I added below code but it not working 

    //              dataAdapter.insert(getString(R.string.selectemp), 0);
                    Spinner.setAdapter(dataAdapter);

                    for (int i=0;i<common.dataArrayList.size();i++){
                        String[] data=new String[3];
                        data[0]=common.dataArrayList.get(i)[0];
                        data[1]=common.dataArrayList.get(i)[1];
                        data[2]=common.dataArrayList.get(i)[2];

                        List.add(data);
                    }
                    for(int i=0;i<List.size();i++){
                        Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
                    }
}

我添加了一个虚拟对象value.And它运行良好。

ArrayList<String> Names = new ArrayList<String>();
                ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Insert.this, R.layout.item_spinner_black, Names);
                dataAdapter.setDropDownViewResource(R.layout.item_spinner);
                Spinner =(Spinner)findViewById(R.id.spinner);

                 String[] data = new String[3];

            data[0]="00000000-0000-0000-0000-000000000000";
            data[1]="Select";
            data[2]="Name";

            List.add(data);





                for (int i=0;i<common.dataArrayList.size();i++){
                    String[] data=new String[3];
                    data[0]=common.dataArrayList.get(i)[0];
                    data[1]=common.dataArrayList.get(i)[1];
                    data[2]=common.dataArrayList.get(i)[2];

                    List.add(data);
                }
                for(int i=0;i<List.size();i++){
                    Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
                }

Spinner.setAdapter(数据适配器);