【发布时间】:2018-07-04 19:49:34
【问题描述】:
我正在通过单击 recyclerview 活动中的按钮打开的 ADD 活动将项目添加到我的回收站列表中。但是当我添加并关闭 ADD 活动时,该项目不会显示在 recyclerview 活动中,除非我关闭它并再次打开它。
如果添加网络调用成功,我会得到一个 ID。然后我将 ID 添加到 sqlite,完成 ADD 活动并返回到我的 recyclerview 活动。我从 sqlite 获取 ID 并将其传递给网络调用函数以获取我的项目。
这是我的 Recyclerview 活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_subscriptions);
db = SubscriptionDB.getInstance(this);
sessionDBHelper = new SessionDBHelper(this);
idDB = IDsDB.getInstance(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatAddSub);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Subscriptions.this, AddSubscription.class);
startActivity(intent);
}
});
customerID = idDB.getCustomerID();
progressBar = findViewById(R.id.progress_bar);
recyclerview = (RecyclerView) findViewById(R.id.subscription_recycler);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);
recyclerview.setLayoutManager(mLayoutManager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
fetchInfo(customerID);
if (subArrayList.size() > 0) {
adapter = new SubRVAdapter(subArrayList, this, this.getSupportFragmentManager());
subArrayList = db.getAll();
recyclerview.setAdapter(adapter);
adapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
}
}
public void fetchInfo(String customerID) {
apiInterface = RetrofitInstance.getRetrofitInstance().create(APIInterface.class);
Call<ArrayList<SubObject>> call = apiInterface.getSubscription(customerID);
progressBar.setVisibility(View.VISIBLE);
call.enqueue(new Callback<ArrayList<SubObject>>() {
@Override
public void onResponse(Call<ArrayList<SubObject>> call, Response<ArrayList<SubObject>> response) {
adapter = new SubRVAdapter(subArrayList, getApplicationContext(), getSupportFragmentManager());
subArrayList = response.body();
recyclerview.setAdapter(adapter);
adapter.notifyDataSetChanged();
progressBar.setVisibility(View.GONE);
int statusCode = response.code();
Log.d("onresponse", "" + statusCode);
}
@Override
public void onFailure(Call<ArrayList<SubObject>> call, Throwable t) {
progressBar.setVisibility(View.GONE);
Log.d("onfailure", " " + t.getMessage());
Toast.makeText(Subscriptions.this, "There is a network issue. Try again later.", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
});
}
@Override
protected void onResume() {
super.onResume();
Log.d("onResume", "RESUME");
fetchInfo(customerID);
if (subArrayList.size() > 0) {
adapter = new SubRVAdapter(subArrayList, this, this.getSupportFragmentManager());
subArrayList = db.getAll();
recyclerview.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
ADD 活动
APIInterface apiInterface = RetrofitInstance.getRetrofitInstance().create(APIInterface.class);
AddSubscriptionModel addSubscriptionModel = new AddSubscriptionModel();
addSubscriptionModel.setStickerNumber(stickerNumber);
addSubscriptionModel.setPin(Pin);
addSubscriptionModel.setUsername(username);
addSubscriptionModel.setPassword(password);
addSubscriptionModel.setEmail(phone);
Call<ArrayList<SubModel>> activate = apiInterface.addSubscription(addSubscriptionModel);
activate.enqueue(new Callback<ArrayList<SubModel>>() {
@Override
public void onResponse(Call<ArrayList<SubModel>> call, Response<ArrayList<SubModel>> response) {
if (response.isSuccessful()) {
int statusCode = response.code();
subsscriptions = response.body();
String cusID = subsscriptions.get(0).getCustomer_id();
String subID = subsscriptions.get(0).getSubscription_id();
idDB.addCustomerID(cusID, subID);
}
Toast.makeText(AddSubscription.this, "SUCCESS", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
Log.d("onresponse", "" + statusCode);
}
}
@Override
public void onFailure(Call<ArrayList<SubModel>> call, Throwable t) {
Toast.makeText(AddSubscription.this, "Network issues", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
Log.d("onfailure"," " + t . getMessage());
}
});
finish();
}
});
【问题讨论】:
-
那么,您的 fetchInfo 方法在网络调用后没有按预期工作?
标签: android android-recyclerview retrofit