从json

时间:2018-07-10 04:33:37

标签: android json gson android-spinner

嗨,我之前问过这个问题。但是我没有合适的解决方案。我有一个微调器,它将从json加载数据。从微调器中选择任何项目后,它将再次将第零位置值发布到另一个API。一切正常,但是我的问题是我默认不希望微调器出现任何变化,我添加了一个名为“没有选择”到第0个位置,但是它不起作用。请帮助我实现这一点。

我的微调器

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


                }

我的帖子数据

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

3 个答案:

答案 0 :(得分:1)

我认为它可以帮助您。

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

答案 1 :(得分:1)

问题是适配器的初始化。因此,当您以后添加数据时,它将没有预先选择的项目。

修改:

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

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

答案 2 :(得分: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);

                 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(dataAdapter);