2016-07-28 13 views
-1

Ich habe zwei activity.Both Aktivität geladen die gleichen Daten in den Spinner von server.and beide Aktivitäten ordnungsgemäß bevölkern. Ich bekomme keine richtige Idee, dass in einem Spinner item Position ändern Zeigen Sie auch den gleichen Gegenstand des Spinners an, wenn Sie zu einer anderen Aktivität wechseln.. So können Sie beide Spinner von zwei verschiedenen Aktivitäten synchronisieren.Wie man android Spinner von zwei verschiedenen Aktivitäten synchronisiert

private class BackTask extends AsyncTask<Void,Void,Void> { 
    ArrayList<String> list; 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     list=new ArrayList<>(); 
    } 
    protected Void doInBackground(Void...params){ 
     InputStream is=null; 
     String result=""; 
     try{ 
      HttpClient httpclient=new DefaultHttpClient(); 
      HttpPost httppost= new HttpPost("http://my_url/Service.asmx/GetServiceList"); 
      HttpResponse response=httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      // Get our response as a String. 
      is = entity.getContent(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 

     //convert response to string 
     try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8")); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       result+=line; 
      } 
      is.close(); 
      //result=sb.toString(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     // parse json data 
     try{ 
      JSONArray jArray =new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
       JSONObject jsonObject=jArray.getJSONObject(i); 
       // add interviewee name to arraylist 

       list.add(jsonObject.getString("ServiceName")); 

     } 
    } 
    catch(JSONException e){ 
     e.printStackTrace(); 
    } 
    return null; 
} 
protected void onPostExecute(Void result){ 
    listItems.addAll(list); 
    adapter.notifyDataSetChanged(); 
} 

} 

Antwort

0
public class StaticResources 
{ 
    private List<String> sDataSource = new ArrayList<String>(); 
    public List<String> getDataSource() {...} 
    public void setDataSource(..) {...} 
} 

In beiden Aktivitäten finden Sie in StaicResources.getDataSource(), dass es ist.

+0

können Sie mir sagen, wie ich dies in meinem Code verwenden. – Adi

+0

Es ist bereits sehr klar, Sie verwenden nur StaicResources.getDataSource(), um die Daten zu füllen und sie dann überall zu verwenden (einschließlich Ihrer zwei Aktivitäten). – David

+0

Kannst du meine Frage verstehen, was ich will, gibt es kein Problem in der Datenpopulation. – Adi

0

Versuchen Sie, mit so

public static Arraylist listid, listdata;

OnPostExecute() {

try{ 
JSONArray jarrvideos=new JSONArray(responcedata); 
    for(int i=0;i<jarrvideos.length();i++){ 
      JSONObject jobj = jarrvideos.getJSONObject(i); 

      listid.add(jobj.getString("id")); 
      listdata.add(jobj.getString("id")); 
     } 

BindSpinnerData(); 

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


private void BindSpinnerData() { 
ArrayAdapter<String> spinnerLocation = new 
    ArrayAdapter<String(MedicalSurgical.this, R.layout.spinneritem, listdata); 
    spinnerLocation.setDropDownViewResource(R.layout.spinnerpopupblack); 
    spnDatasecond.setAdapter(spinnerLocation); 
} 

jetzt wird es Ihre erste Aktivität dpinner Daten angezeigt, wenn Sie eine andere Aktivität gleichen Spinner Daten benötigen, dann müssen Sie listid zugreifen, listdata Array-Liste in einer anderen Klasse

für Zugriff auf classname.listid oder classname.listdata

+0

Ich habe bereits meine Spinner; s Daten, – Adi

+0

das Problem ist, wie their Position in anderen Aktivität Spinner – Adi

+0

erhalten Spinner ausgewählten Artikel ID und Name und gehen Sie auf zweite Aktivität, dann Adapter auf Spinner setzen und dann Element auf der gleichen Position, die gesetzt Du hast deine erste Aktivität bereits erreicht. vielleicht hilft dir das. – Amitsharma