0

API에서 데이터를 가져 오는 Android 앱이 있습니다. 이제이 데이터를 API의 ActiveAndroid 테이블에 저장해야합니다.ActiveAndroid - 데이터를 Android 데이터베이스에 저장하는 방법

그래서 나는 그 부분에 붙어있어.

@Table(name = "Partners") 
public class Partners extends Model { 

    @Column(name = "Name") 
    public String name; 

    public Partners() {} 

    public Partners(String name) { 
     this.name = name; 
    } 
} 

이 내 POJO 모델입니다 :

public class Partner { 

    @Expose 
    @Column(name = "name") 
    private List<String> name; 


    public List<String> getName() { 
     return name; 
    } 
    public void setName(List<String> name) { 
     this.name = name; 
    } 
} 

그리고 여기가 데이터를 받고 저장하기 위해 노력하고있어 코드의 일부입니다 여기에

내 테이블 파트너 (활성 안드로이드)입니다 ActiveAndroid 테이블에 그것을 :

public class DownloadMain extends Fragment implements Callback<Partner> { 

    private static final String TAG = DownloadMain.class.getSimpleName(); 

    private Button dloadPartners; 
    private Call callPartners; 

    public DownloadMain() {} 

    public DownloadMain newInstance() { return new DownloadMain(); } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.download_main, container, false); 

     dloadPartners = (Button) view.findViewById(R.id.downloadPartners); 
     dloadPartners.setOnClickListener(btnListener); 

     callPartners = APIHelper.getApiService().getPartners(); 

     return view; 
    } 

    Button.OnClickListener btnListener = (new Button.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      callPartners.clone().enqueue(DownloadMain.this); 
      insertPartners(); 
     } 
    }); 

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

     if(response.body() == null) { 
      try { 
       response.errorBody().string(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      Toast.makeText(getActivity(), "No Partners!", Toast.LENGTH_SHORT).show(); 
     } else { 
      List<String> partners = (List<String>) response.body(); 
      Log.d(TAG, "Number of partners received: " + partners.size()); 
      Toast.makeText(getActivity(), "Partners downloaded!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
    @Override 
    public void onFailure(Call call, Throwable t) { 
    } 

    private void insertPartners() { 
     ActiveAndroid.beginTransaction(); 
     try { 
      for (int i = 0; i < 100; i++) { 
       Partner partner = new Partner(); 
       partner.getName(); 
       //partner.save(); 
      } 
      ActiveAndroid.setTransactionSuccessful(); 
     } finally { 
      ActiveAndroid.endTransaction(); 
     } 
    } 
} 

문제는 내가 t에 API에서 얻을 데이터를 저장하는 방법입니다 유능한, 그래서 나는 제대로 할 수있는 몇 가지 팁과 조언이 필요합니다.

질문 : 웹에서 데이터를 저장하는 방법에 대한 팁이 필요합니까? ActiveAndroid 테이블에 추가 장착 하시겠습니까?

답변

1

내가 이미 사용한 ActiveAndroid 내 오래된 날씨 앱 프로젝트를 확인하십시오.

다음은 데이터베이스 방법에 대한 내 저장 중 하나 : ActiveAndroid으로 https://github.com/piotrek1543/LocalWeather/blob/master/app/src/main/java/com/piotr/localweather/repositories/WeatherDatabaseRepository.java

Weather 또는 Wind 같은 객체를 저장하기 정말 간단하지만 몇 가지 목적은 다음과 같습니다에서

public void saveCityDataToDatabase(Forecast forecast) { 
    ActiveAndroid.beginTransaction(); 
    try { 
     if (WeatherApplication.getCityList().size() > 0) { 
      new Delete().from(City.class).execute(); 
     } 
     forecast.getCity().getCoord().save(); 
     forecast.getCity().save(); 
     ActiveAndroid.setTransactionSuccessful(); 
    } finally { 
     ActiveAndroid.endTransaction(); 
    } 
    Log.d("DATABASE", "WeatherApplication: " + WeatherApplication.getCityList()); 
} } 

TypeSerializer을 사용해야합니다. 귀하의 예제에서는 그것을 deserialize 및 저장 List<String> 것입니다.

Github 페이지에서 알 수 있듯이 https://github.com/pardom/ActiveAndroid 이 libary는 2 년 이상 유지되지 않으므로 새로운 프로젝트에서는 사용하지 않는 것이 좋습니다. 많은 버그가있을 수 있습니다. 나에게이 라이브러리의 구현은 꽤 고통 스러웠다.

ActiveAndroid 대신 Realm, greenDao 또는 ORMLite 라이브러리를 사용하여 데이터를 저장하는 것이 좋습니다.

는 모든 매개 변수없는 생성자를 만들의

0

먼저 도움과에서 슈퍼를 부를 것이다 바랍니다.

public Partners() { 
    super(); 
} 

다음으로 partern.save()로 충분합니다. 당신은 아마 당신이 파트너 객체의 JSON을 넣어 GSON를 사용하고, 개조를 통해 웹 이리저리 파트너 개체를 얻을 경우

List<Partner> partners = new Select().from(Partner.class).execute()); 

처럼 당신이 뭔가를 할 수있는 모든 parterns을 retreive합니다. 그래서 여러분은 그 객체를 모델로 확장시키고, 위와 같은 paramterless 생성자를 넣고 @Table 주석을 넣을 수 있습니다.