Я использую вкладки в activity_main.xml с 3 вкладками, каждый с фрагментами ... в tab1 я разбираю данные json в виде списка и сгенерирован успешно .... мой вопрос здесь всякий раз, когда я переходил на другие вкладки и возвращался на 1-ю вкладку, список в tab1 генерируется снова, и он дважды показывает данные ..... я хочу знать, как избавиться от этого ..... СПАСИБО В ADVANCEJson parsing in fragments listview android
FragmentA.class
enter code here
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class FragmentA extends Fragment {
ListView list;
TextView pm;
TextView sp;
ArrayList<HashMap<String, String>> mlist = new ArrayList<HashMap<String,String>>();
//URL to get JSON Array
private static String url = "http://10.0.2.2:80/json/apple.php";
//JSON Node Names
private static final String TAG_APPLE = "Apple";
private static final String TAG_PHONEMODEL = "PhoneModel";
private static final String TAG_SPECS = "specs";
JSONArray model = null;
public FragmentA() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_a, container, false);
return v;
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
new mparse().execute();
}
public void apple(){
mlist = new ArrayList<HashMap<String,String>>();
}
private class mparse extends AsyncTask<String, String, JSONObject>{
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pm = (TextView)getView().findViewById(R.id.phonemodel);
sp = (TextView)getView().findViewById(R.id.specification);
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... arg0) {
// TODO Auto-generated method stub
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
// TODO Auto-generated method stub
pDialog.dismiss();
try {
// Getting JSON Array
model = json.getJSONArray("Apple");
for(int i = 0 ; i< model.length(); i++){
JSONObject c = model.getJSONObject(i);
String phonemodel = c.getString(TAG_PHONEMODEL);
String specs = c.getString(TAG_SPECS);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_PHONEMODEL, phonemodel);
map.put(TAG_SPECS, specs);
mlist.add(map);
list = (ListView)getView().findViewById(R.id.listView1);
ListAdapter adapter = new SimpleAdapter(getActivity(), mlist, R.layout.list, new String[] {TAG_PHONEMODEL}, new int[] {R.id.phonemodel});
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
// TODO Auto-generated method stub
getActivity().setContentView(R.layout.specification);
try {
JSONObject obj = model.getJSONObject(position);
String sp = (String) obj.getString(TAG_SPECS);
TextView s = (TextView)getView().findViewById(R.id.specification);
s.setText(sp);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}catch(JSONException e){
e.printStackTrace();
}
}
}
}
Вход кошка
12-22 18:36:35.286: I/Process(713): Sending signal. PID: 713 SIG: 9
12-22 18:36:38.366: D/gralloc_goldfish(728): Emulator without GPU emulation detected.
12-22 18:36:39.256: D/dalvikvm(728): GC_CONCURRENT freed 188K, 10% free 6001K/6663K, paused 8ms+8ms
12-22 18:36:40.695: D/AndroidRuntime(728): Shutting down VM
12-22 18:36:40.695: W/dalvikvm(728): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
12-22 18:36:40.715: E/AndroidRuntime(728): FATAL EXCEPTION: main
12-22 18:36:40.715: E/AndroidRuntime(728): java.lang.NullPointerException
12-22 18:36:40.715: E/AndroidRuntime(728): at com.ss6.FragmentA$mparse$1.onItemClick(FragmentA.java:132)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.widget.AdapterView.performItemClick(AdapterView.java:292)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.widget.AbsListView$1.run(AbsListView.java:3168)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.os.Handler.handleCallback(Handler.java:605)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.os.Handler.dispatchMessage(Handler.java:92)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.os.Looper.loop(Looper.java:137)
12-22 18:36:40.715: E/AndroidRuntime(728): at android.app.ActivityThread.main(ActivityThread.java:4340)
12-22 18:36:40.715: E/AndroidRuntime(728): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 18:36:40.715: E/AndroidRuntime(728): at java.lang.reflect.Method.invoke(Method.java:511)
12-22 18:36:40.715: E/AndroidRuntime(728): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-22 18:36:40.715: E/AndroidRuntime(728): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-22 18:36:40.715: E/AndroidRuntime(728): at dalvik.system.NativeStart.main(Native Method)
Вы переписываете свой материал, а затем читаете его в mlist. Просто сделайте mlist.clear() до mlist.add() – rupps
@rupps спасибо за предложение ur, это сработало ... – aswin
@rupps на той же проге, когда я нажимаю на список, он получает ошибку и закрывает проект ..... – aswin