这很难解释但是......这段代码应该从JSON数组中添加项目并显示在ListView上。使用我覆盖的onResume方法刷新页面
public void onResume() {
super.onResume();
if (adapter != null) {
newItemlist.clear();
newItemlist.addAll(getJsonData());
adapter.notifyDataSetChanged();
//newItemlist.clear();
}
}
所有这一切应该是从JSON对象显示内容。以下是全班。
public class LogFragment extends Fragment {
Cursor cursor;
ListView listV;
String json;
SimpleAdapter adapter;
SharedPreferences exmaplePrefs;
public static final String PREFS = "examplePrefs";
ArrayList<HashMap<String, String>> newItemlist = new ArrayList<HashMap<String, String>>();
public LogFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// getJsonData();
String from[] = { "time", "event", "player" };
int to[] = { R.id.time, R.id.event, R.id.player };
adapter = new SimpleAdapter(getActivity(), newItemlist,
R.layout.custom_list_row, from, to);
}
public ArrayList<HashMap<String, String>> getJsonData() {
exmaplePrefs = this.getActivity().getSharedPreferences(PREFS, 0);
json = exmaplePrefs.getString("jsonString", "cant find json");
JSONObject MainObj = null;
JSONArray JsonArray = null;
JSONObject temp = null;
try {
MainObj = new JSONObject(json);
JsonArray = MainObj.optJSONArray("Events");
if (JsonArray == null) {
temp = MainObj.getJSONObject("Events");
String time = temp.getString("time");
String event = temp.getString("event");
String player = temp.getString("player");
HashMap<String, String> map = new HashMap<String, String>();
map.put("time", time);
map.put("event", event);
map.put("player", player);
newItemlist.add(map);
} else {
for (int i = 0; i < JsonArray.length(); i++) {
JSONObject c = JsonArray.getJSONObject(i);
// Storing JSON item in a Variable
String time = c.getString("time");
String event = c.getString("event");
String player = c.getString("player");
// Adding value HashMap key => value
HashMap<String, String> map = new HashMap<String, String>();
map.put("time", time);
map.put("event", event);
map.put("player", player);
newItemlist.add(map);
}
}
} catch (Exception e) {
// TODO: handle exception
System.out.print("ERROR");
}
return newItemlist;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_log, container,
false);
listV = (ListView) rootView.findViewById(android.R.id.list);
listV.setAdapter(adapter);
return rootView;
}
@Override
public void onResume() {
super.onResume();
if (adapter != null) {
newItemlist.clear();
newItemlist.addAll(getJsonData());
adapter.notifyDataSetChanged();
//newItemlist.clear();
}
}
我遇到的问题是项目被复制,例如,如果我点击item1然后显示将显示item1 item1。如果我然后单击item2,则显示为item1 item2 item1 item2。
这引出了我的奇怪问题。在调试时,我逐步完成代码....更多的重复!即超过15行以下是结果。
[{item1 = ONE},{item1 = ONE},{item1 = ONE},{item1 = ONE},{item1 = ONE},{item1 = ONE},{item1 = ONE},{item1 = ONE },{ITEM1 =一个},{ITEM1 =一个},{ITEM1 =一个},{ITEM1 =一个},{ITEM1 =一个},{ITEM1 =一个},{ITEM1 = ONE},]
答案 0 :(得分:1)
这很简单:
newItemlist
newItemlist
newItemlist
getJsonData
getJsonData
newItemList
中的所有项目
您的商品是重复的。