【问题标题】:How do i merge two json object in android spinner如何在 android spinner 中合并两个 json 对象
【发布时间】:2017-06-19 10:04:32
【问题描述】:

从我的数据库中检索数据后,是否可以将两个对象合并为一个对象?

这是我的微调器的 android 检索代码

spinner1 = (Spinner) findViewById(R.id.sp1);
        final List<String> list1 = new ArrayList<String>();

     try
            {
                JSONArray JA = new JSONArray(result);
                JSONObject json, json1;

                s_name = new String[JA.length()];
                s_gender = new String[JA.length()];

                for(int i = 0; i<JA.length(); i++)
                {
                    json = JA.getJSONObject(i);
                    s_name[i]=json.getString("s_name");

                }
                for(int i = 0; i<JA.length(); i++)
                {
                    json1 = JA.getJSONObject(i);
                    s_gender[i]=json1.getString("s_gender");
                }

                for(int i = 0; i<s_name.length; i++)
                {
                    list1.add(s_name[i]);
                }
                for(int i = 0; i<s_gender.length; i++)
                {
                    list1.add(s_gender[i]);
                }


            } catch (JSONException e) {
                e.printStackTrace();
            }
            spinner_fn();

        }

private void spinner_fn() {
        ArrayAdapter<String> spinner = new ArrayAdapter<String>(Games.this, layout.simple_spinner_dropdown_item, list1);
        spinner1.setAdapter(spinner);
}

s_name 检索运动,s_gender 检索性别。在我的代码中,它显示运动名称但没有性别。我想要的是这样的 篮球女

谢谢。

【问题讨论】:

    标签: php android mysql json


    【解决方案1】:

    当前代码是添加所有 sport names 值,然后是所有 gender

    1.) 在一个循环中遍历两个数组。

    2.) 从两个数组中获取值并将它们作为单个 String 添加到列表中

    将这两个 arrasy 组合为单个字符串,用于这样的微调器适配器

     for(int i = 0; i<s_name.length; i++)
        {
           list1.add(s_name[i] + " "+s_gender[i]);
           //         Basketball +" "+ Female
        }
    

    您可以使用单个循环进一步优化您的 JSON Parsing 代码以获取您的两个值

     for(int i = 0; i<JA.length(); i++)
         {
            json        =  JA.getJSONObject(i);
            s_gender[i] =  json.getString("s_gender");
            s_name[i]   =  json.getString("s_name");    
         }
    

    代码将是

    class YourActivity extends ..... 
    {
    
        Spinner spinner1;
    
        // Declare list1 global 
        List<String> list1;
    
        Somefunction() {
            try
            {
                spinner1 = (Spinner) findViewById(R.id.sp1);
    
                // initialize list
                list1 = new ArrayList<String>();
    
                JSONArray JA = new JSONArray(result);
                JSONObject json, json1;
    
                s_name   = new String[JA.length()];
                s_gender = new String[JA.length()];
    
                for(int i = 0; i<JA.length(); i++)
                {
                    json        = JA.getJSONObject(i);
                    s_name[i]   = json.getString("s_name");
                    s_gender[i] = json.getString("s_gender");
                }
    
                for(int i = 0; i<s_name.length; i++)
                {
                    list1.add(s_name[i]+" "+s_gender[i]);
                }
    
            } catch (JSONException e) {
                e.printStackTrace();
            }
            spinner_fn();
        }
    
        private void spinner_fn() {
            ArrayAdapter<String> spinner = new ArrayAdapter<String>(Games.this,  android.R.layout.simple_spinner_item, list1);
            spinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner1.setAdapter(spinner);
        }
    }
    

    【讨论】:

    • 仍然只显示体育先生。我应该在这里改变什么? ArrayAdapter spinner = new ArrayAdapter(Games.this, layout.simple_spinner_dropdown_item, s_name);
    • 因为当我将 s_name 与性别联系在一起时。微调器只有男性和女性
    • @osoda 你的list1 必须在你的类内部但在函数外部声明,就像你对spinner1 所做的一样
    • @osoda 我很高兴能帮上忙,编码愉快
    【解决方案2】:

    创建新类

    class SportsModel {
        private String name = "";
        private String gender = "";
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        @Override
        public String toString() {
            return name + " " + gender;
        }
    }
    

    现在用下面的代码编辑你的代码。

     try {
            final JSONArray JA = new JSONArray(result);
    
            final ArrayList<SportsModel> list1 = new ArrayList<>();
    
            for (int i = 0; i < JA.length(); i++) {
                final SportsModel model = new SportsModel();
                final JSONObject json = JA.getJSONObject(i);
    
                model.setName(json.getString("s_name"));
                model.setGender(json.getString("s_gender"));
    
                list1.add(model);
            }
    
        } catch (JSONException e) {
            e.printStackTrace();
        }
        spinner_fn();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      相关资源
      最近更新 更多