【发布时间】:2020-09-01 06:58:12
【问题描述】:
我想通过 Retrofit 在 Body 中发送 Room Database 保存的数据。我将数据保存在 Room 的列表中,并将通过 Retrofit Networking Library 在正文中发送相同的数据。下面是相同的代码。
房间桌类
@Entity(tableName = "cash")
public class Cash implements Serializable {
@PrimaryKey(autoGenerate = true)
private int id;
@SerializedName("UserID")
@ColumnInfo(name = "UserID")
private String UserID;
@SerializedName("FareAmount")
@ColumnInfo(name = "FareAmount")
private String FareAmount;
@SerializedName("TransactionId")
@ColumnInfo(name = "TransactionId")
private String TransactionId;
public String getTransactionId() {
return TransactionId;
}
public void setTransactionId(String transactionId) {
TransactionId = transactionId;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserID() {
return UserID;
}
public void setUserID(String userID) {
UserID = userID;
}
public String getFareAmount() {
return FareAmount;
}
public void setFareAmount(String fareAmount) {
FareAmount = fareAmount;
}
道接口
@Dao
public interface CashDao {
@Query("Select * from cash ORDER BY id ASC")
List<Cash> getCashList();
@Insert
void insertCash(Cash cash);
@Update
void updateCash(Cash cash);
@Delete
void deleteCash(Cash cash);
@Query("DELETE FROM cash")
void deleteAll();
}
事务数据库类
@Database(entities = {Cash.class}, exportSchema = false, version = 3)
public abstract class TransactionDatabase extends RoomDatabase {
private static final String DB_NAME = "transaction_db";
private static TransactionDatabase instance;
public static synchronized TransactionDatabase getInstance(Context context){
if (instance == null){
instance =
Room.databaseBuilder(context.getApplicationContext(),TransactionDatabase.class,DB_NAME)
.fallbackToDestructiveMigration()
.allowMainThreadQueries()
.build();
}
return instance;
}
public abstract CashDao cashDao();
}
主活动
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cash = new Cash(str_userId, str_fareAmount,str_transactionId);
appDB.cashDao().insertCash(cash);
}
});
btn_upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<Cash> cashlist = appDB.cashDao().getCashList();
if(cashlist.size() == 0){
Toast.makeText(MainActivity.this,"Data is already uploaded!",Toast.LENGTH_SHORT).show();
} else {
// upload data code here
}
appDB.cashDao().deleteAll();
}
});
public interface AppServiceAPI{
@POST("/Api/OfflineCashTransaction")
Call<ServiceOfflineAPI> cashtxn(@Body Cash cash);
}
我想在 body json 中发送数据,类型将通过 Retrofit 如下所示。
[{
"UserId":"Test",
"FareAmount":"65",
"TransactionId":202008281139
},{
"UserId":"Test",
"FareAmount":"95",
"TransactionId":202008281140
},{
"UserId":"Test",
"FareAmount":"195",
"TransactionId":202008281156
}]
响应如下:
{
"Status": true,
"Error": "",
"Message": "3 : Transaction successfully Saved!!.",
"Data": ""
}
【问题讨论】:
-
这个问题的具体内容是什么?您可以使用 Retrofit 将数据作为
JsonObject类型的参数简单地发送。网上有很多关于它的说明。 stackoverflow.com/questions/40435098/… -
@Sajjad 你分享的链接只有问题但没有好的答案,除此之外我想在正文中发送房间数据库数据。那么我会将数据放入 Retrofit Call 中。
标签: android retrofit android-room