2016-07-23 17 views
-3

Ich habe eine Android-App und ich bekomme Daten von Web-API mit Nachrüstung.Wie man Daten speichert, die durch das Nachrüsten in Datenbank erhalten werden

Jetzt muss ich diese Daten in meine Tabelle speichern. Ich benutze aktiven Android.

Mein Tabellenmodell "Partner", die Daten, die ich aus Web-API abrufe und in dieser Tabelle gespeichert werden muss Partner.

@Table(name = "Partners") 
public class Partners extends Model { 
    @Expose 
    @Column(name = "Name") 
    public String name; 
    public Partners() {} 
    public List<Partners> getPartners() { return getMany(Partners.class, "Partners");} 
} 

Ich habe ApiService erstellt

public interface APIService {  
    @GET("Partners") 
    Call<Partners> getPartners(); 
} 

Ich habe api Helfer

public class APIHelper { 

    public static APIService apiService; 

    public static APIService getApiService() { 
     if (apiService == null) { 
      Retrofit retrofit = new Retrofit.Builder().baseUrl("https://here-is-part-of-link/partners.json") 
        .addConverterFactory(GsonConverterFactory.create()).build(); 
      apiService = retrofit.create(APIService.class); 
     } 
     return apiService; 
    } 
} 

Jahr Dies ist mein Fragment, wo ich versuche Methode aufzurufen Daten aus Web-api zu bekommen.

public class MainFragment extends Fragment implements Callback<Partners> { 

    Button shippingFragment, deliveryFragment, measurementFragment, takeOversFragment; 
    private Call<Partners> call; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.main_fragment, parent, false); 
     getActivity().setTitle("Title"); 
     shippingFragment = (Button) view.findViewById(R.id.shipping); 
     deliveryFragment = (Button) view.findViewById(R.id.delivery); 
     measurementFragment = (Button) view.findViewById(R.id.measurement); 
     takeOversFragment = (Button) view.findViewById(R.id.take_overs); 
     shippingFragment.setOnClickListener(btnFragmentListener); 
     deliveryFragment.setOnClickListener(btnFragmentListener); 
     measurementFragment.setOnClickListener(btnFragmentListener); 
     takeOversFragment.setOnClickListener(btnFragmentListener); 

     call = APIHelper.getApiService().getPartners(); 
     call.enqueue(this); 

     return view; 
    } 

    Button.OnClickListener btnFragmentListener = (new Button.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Fragment fragment = null; 
      Intent intent = null; 
      switch (v.getId()) { 
       case R.id.shipping: 
        fragment = new ShippingFragment(); 
        replaceFragment(fragment); 
        break; 
       case R.id.delivery: 
        fragment = new DeliveryMain(); 
        replaceFragment(fragment); 
        break; 
       case R.id.measurement: 
        intent = new Intent(getActivity(), MeasurementMain.class); 
        startActivity(intent); 
        break; 
       case R.id.take_overs: 
        intent = new Intent(getActivity(), AllLogs.class); 
        startActivity(intent); 
        break; 
      } 
     } 
    }); 

    public void replaceFragment(android.support.v4.app.Fragment rFragment) { 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.fragment_holder, rFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
    } 

    @Override 
    public void onResponse(Call<Partners> call, Response<Partners> response) { 

    } 

    @Override 
    public void onFailure(Call<Partners> call, Throwable t) { 
     Log.e("Error!!!!!!!!", String.valueOf(call)); 
    } 
} 

Jetzt muss ich Daten in Tabelle "Partner" speichern. Ich habe versucht, dies in onResponse() -Methode zu tun, aber ich scheiterte.

FRAGE: Könnte jemand mir helfen, Daten von Web-API in die Datenbank zu speichern?

EDIT: enter image description here

Antwort

0

wie diese innerhalb onResponse Do

@Override 
    public void onResponse(Call<Partners> call, Response<Partners> response) { 

    List<Partners> partners = response.body().getPartners(); 
    //the response is stored in local object and now you can store it in sqlite db 

    } 
+0

Es verwendet getPartners() -Methode von meinem Modell, das alle Partner ruft aber jetzt ist es leer und wirft null Objektverweis – RubyDigger19

+0

ist Ihr URL 'https: // here-is-Teil-of-link/partners.json' valid ?? Überprüfen Sie mit Postbote-Tool, ob die API gibt Daten zurück – SaravInfern

+0

ja, es ist gültig .. ok ich werde das tun – RubyDigger19