我的片段上有一个微调器,这个微调器上的数据正由我的数据库中的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();
}
}
答案 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;