问题与Android纺纱 - 在纺纱加载不同的值 [英] Issue with android spinners - Loading distinct values in spinners

查看:166
本文介绍了问题与Android纺纱 - 在纺纱加载不同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用两个纱厂显示我是从JSON响应获取项目。我有2个问题,现在。当u检查我的logcatü可以看到里面有重复的项目(右侧列表中,u能看到这么多锅)。我想在我的微调有1项只有一次。我想用类似的不同我们SQL数据库使用的东西。

I'm using two Spinners to show the items I'm getting from the json response. I have 2 problems right now. When u check my logcat u can see there are items repeating (Right side list, u can see so many pan). I want to have 1 item only once in my Spinner. I want to use something similar to distinct we use in sql databases.

我的第二个问题是,
在1微调,然后第二个飞旋选择水平应该包含平移相关的项目。 (请在第1微调和2锅应该只显示潘大,泛媒体和个人平移)

My second problem is, Select pan in the 1 spinner then 2nd spinner should contain items related to pan. (select pan in 1st spinner and 2nd should display only Pan large, pan medium and personal pan)

@Override
public void onTaskCompleted(JSONArray responseJson) {

    try {
        List<String> crust = new ArrayList<String>();
        List<String> description = new ArrayList<String>();
        List<String> extraDescription = new ArrayList<String>();

        for (int i = 0; i < responseJson.length(); ++i) {
            JSONObject object = responseJson.getJSONObject(i);

            if ((object.getString("MainCategoryID")).equals("1")
                    && (object.getString("SubCategoryID")).equals("1")) {

                JSONArray subMenuArray = object
                        .getJSONArray("SubMenuEntity");
                for (int j = 0; j < subMenuArray.length(); ++j) {
                    JSONObject subMenuObject = subMenuArray
                            .getJSONObject(j);
                    Log.i("Crust", subMenuObject.getString("Crust"));
                    crust.add(subMenuObject.getString("Crust"));

                    Log.i("Description",
                            subMenuObject.getString("Description"));
                    description.add(subMenuObject.getString("Description"));

                    JSONArray extraItemEntityArray = subMenuObject
                            .getJSONArray("ExtraItemEntity");

                }

            }
            crustSP = (Spinner) findViewById(R.id.sp_crust);
            ArrayAdapter<String> dataAdapterCru = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, crust);
            dataAdapterCru
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            crustSP.setAdapter(dataAdapterCru);

            sizeSP = (Spinner) findViewById(R.id.sp_pizza_size);
            ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
                    this, android.R.layout.simple_spinner_item, description);
            dataAdapterDes
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            sizeSP.setAdapter(dataAdapterDes);

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

这个输出

推荐答案

调用此方法来获得不同的描述,然后使用这个函数的返回值设置适配器...

Call this method to get distinct descriptions and then set the adapter using the return value of this function...

public static ArrayList<String> removeDuplicatesFromList(ArrayList<String> descriptions)
{
    ArrayList<String> tempList = new ArrayList<String>();
    for(String desc : descriptions)
    {
        if(!tempList.contains(desc))
        {
            tempList.add(desc);
        }
    }
    descriptions = tempList;
    tempList = null;
    return descriptions;
}

例如

description = Utils.removeDuplicatesFromList(description);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, description);

注意:

我会建议你做一个新的类调用它Utils.java并把上面的方法里面,然后把它称为我所提到。

I would suggest you make a new class call it Utils.java and place the above method inside it and then call it i have mentioned above.

就像这个...

import java.util.ArrayList;

public class Utils
{

    private Utils()
    {
        //Its constructor should not exist.Hence this.
    }

    public static ArrayList<String> removeDuplicatesFromList(ArrayList<String> descriptions)
    {
        ArrayList<String> tempList = new ArrayList<String>();
        for(String desc : descriptions)
        {
            if(!tempList.contains(desc))
            {
                tempList.add(desc);
            }
        }
        descriptions = tempList;
        tempList = null;
        return descriptions;
    }

}

我希望它能帮助。

I hope it helps.

这篇关于问题与Android纺纱 - 在纺纱加载不同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆