i 내 액티비티 중 하나에서 조각을 사용하는 앱을 만들고 있습니다. 각 조각보기에서 필자는 각보기에서 세 개의 파일 인 세 개의 파일을 사용하여 데이터베이스에서 가져올 것입니다. 첫 번째 조각은 예상대로 작동합니다. 그러나, 내 json 파서 코드를 두 번째 스 와이프보기에 추가 할 때 작업이로드 될 때 즉시 시도 할 참조하십시오 (두 번째 스 와이프 뷰 토스트 확인) 및 json 파서 두 번째 뷰에 모든 데이터를로드하지 않습니다. . 주 활동에 JSON을 연결하고 뷰를 전환 할 때 어댑터와 URL을 전환해야합니까, 아니면 모든 조각에서 JSON을로드하려고해야합니까 (현재 제가하고있는 일입니다). 어떤 통찰력이라도 대단히 감사 할 것입니다. 감사합니다.파편을 사용하여 3 개의 json 피드를 얻으려고 시도합니다.
public class chatfragment extends Fragment {
ListView l;
List<chatitem> listItem;
ChatListAdapter adapter;
String category = "430";
chatitem item;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.chatfragment, container, false);
l = (ListView) rootView.findViewById(R.id.chatlist);
listItem = new ArrayList<chatitem>();
adapter = new ChatListAdapter(getActivity(),R.layout.chatfragment, listItem);
l.setAdapter(adapter);
new ReadWeatherJSONFeedTask().execute("myurl");
return rootView;
}
public String readJSONFeed (String URL){
StringBuilder stringBuilder = new StringBuilder();
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(URL);
try{
HttpResponse response = httpClient.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if(statusCode == 200){
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) !=null){
stringBuilder.append(line);
}
inputStream.close();
}else{
Log.d("readJSONFeed", "Failed to download file");
}
}catch (Exception e){
Log.d("readJSONFeed", e.getLocalizedMessage());
}
return stringBuilder.toString();
}
private class ReadWeatherJSONFeedTask extends AsyncTask<String, Void, String>{
protected String doInBackground(String...urls){
return readJSONFeed(urls[0]);
}
protected void onPostExecute(String result){
try{
JSONObject jsonObject = new JSONObject(result);
JSONArray subcat = new
JSONArray(jsonObject.getString("results"));
for(int i = 0; i < subcat.length(); i++){
JSONObject p = subcat.getJSONObject(i);
item = new chatitem(p.getString("hubusername"),p.getString("picture"),p.getString("timeadjust"),p.getString("comment"));
listItem.add(item);
// Toast.makeText(getApplicationContext(), p.getString("subcategory"), Toast.LENGTH_LONG).show();
adapter.notifyDataSetChanged();
}
}catch (Exception e){
Log.d("ReadWeatherJSONFeedTask", e.getLocalizedMessage());
}
// Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_LONG).show();
};
}
}
내 활동에 3 개의 JSON 파일을 다운로드하고 해당 배열 목록에로드 한 다음 해당보기로 전환하면 표시됩니다. 어떤 이유로 모든 병목 목을 볼 수 있습니다. 특히 모든 사용자가 세 조각을 모두 사용하지는 않기 때문에 클라이언트와 서버 모두에서 시스템 리소스를 낭비하고 있습니다. 프래그먼트 어댑터가 다음 프래그먼트를 평가하지 못하게 할 방법이 있습니까? – Dnaso
사용자는 데이터 사용량을 줄이기 위해 속도를 선호합니다. 데이터 사용량을 억제하려면 wifi가 아닌 경우 회 전자를 표시 한 다음 해당 페이지에있을 때 dl을 시작하십시오. – Warpzit
Warpzit 실제로 메모리 오버플로에 더 관심이 있습니다 ... 조각을 통해 슬쩍 할 때 안드로이드는 자동으로 메모리를 절약하기 위해 없애거나 메모리에서 풀 때까지 슬리 프 뷰의 메모리에 everyhting을 유지합니까? – Dnaso