Android spinner继续添加相同的值

时间:2017-09-04 08:23:47

标签: android android-fragments android-spinner

我的片段上有一个微调器,这个微调器上的数据正由我的数据库中的JSON填充。我遇到的问题是它总是在我的微调器上重复相同的数据。

示例:

篮球 棒球 足球

每当我切换标签并返回时,这都发生在我的微调器上。

篮球 棒球 足球 篮球 棒球 足球

这是我在我的微调器上检索数据的代码

public class Games extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.games, container, false);
        spinner1 = (Spinner) rootView.findViewById(R.id.sp1);
 getSpinner();




        return rootView;
}

private void getSpinner(){
        try
        {
            URL url = new URL (Config.URL_SPIN);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            is = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            StringBuilder sb = new StringBuilder();
            while((line = bufferedReader.readLine()) != null)
            {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

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


            e_name = new String[JA.length()];
            e_gender = new String[JA.length()];

            for(int i = 0; i<JA.length(); i++)
            {
                json        =  JA.getJSONObject(i);
                e_gender[i] =  json.getString("e_gender");
                e_name[i]   =  json.getString("e_name");
            }
            list1.add("All");
            list1.add("NonSports");
            for(int i = 0; i<e_name.length; i++)
            {
                list1.add(e_name[i] + " "+e_gender[i]);
            }



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

2 个答案:

答案 0 :(得分:1)

您需要清除 Arraylist 数据。

list1.clear();

你应该把它放在 getSpinner()方法的开头。

答案 1 :(得分:1)

发生这种情况是因为您再次调用getSpinner并填充列表...您可以在方法开头清除列表

private void getSpinner()
{
     list1.clear();

    try{
....
}

或者您可以使用布尔值

private void getSpinner()
{
    try
    {
      ....
      isListPopuplated = true;
    }
}

然后在创建

上检查它
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.games, container, false);
    spinner1 = (Spinner) rootView.findViewById(R.id.sp1);

 if(!isListPopulated)
 {
     getSpinner();
 }




    return rootView;