Java 当我使用改型将数据添加到数据库中时,如何刷新RecyclerView?

Java 当我使用改型将数据添加到数据库中时,如何刷新RecyclerView?,java,android,android-recyclerview,retrofit2,Java,Android,Android Recyclerview,Retrofit2,我正在使用2进行一些测试,以显示用户列表并创建新用户。我的问题是如何在向我的api添加带有POST请求的用户后刷新RecyclerView 我有一个main活动,它向Laravel api发出GET请求。然后,我创建了一个CreateUserActivity,它具有创建新用户的表单。单击“创建用户”按钮后,我完成该活动以显示main活动,但我想用新用户更新RecyclerView CreateUserActivity.java 公共类CreateUserActivity扩展了AppCompatA

我正在使用
2
进行一些测试,以显示用户列表并创建新用户。我的问题是如何在向我的api添加带有
POST
请求的用户后刷新
RecyclerView

我有一个
main活动
,它向Laravel api发出GET请求。然后,我创建了一个
CreateUserActivity
,它具有创建新用户的表单。单击“创建用户”按钮后,我完成该活动以显示
main活动
,但我想用新用户更新
RecyclerView

CreateUserActivity.java

公共类CreateUserActivity扩展了AppCompatActivity{
私有TextInputItemText inputFirstName;
私有文本输入文本输入姓氏;
私人文本输入文本输入电子邮件;
私有文本输入文本输入密码;
私人按钮保存按钮;
私人api服务;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u create\u user);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
inputFirstName=(TextInputItemText)findViewById(R.id.txInputFirstName);
inputLastName=(textInputItemText)findViewById(R.id.txtInputLastName);
inputEmail=(textInputItemText)findViewById(R.id.txInputEmail);
inputPassword=(textInputItemText)findViewById(R.id.txInputPassword);
saveButton=(按钮)findViewById(R.id.btnCreateUser);
api=RetroClient.getApiService();
saveButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
String firstName=inputFirstName.getText().toString().trim();
字符串lastName=inputLastName.getText().toString().trim();
字符串email=inputEmail.getText().toString().trim();
字符串密码=inputPassword.getText().toString().trim();
用户=新用户();
user.setFirstName(firstName);
user.setLastName(lastName);
user.setEmail(email);
user.setPassword(密码);
用户setGenreId(1);
如果(!TextUtils.isEmpty(firstName)){
sendPost(用户);
}
}
});
}
私有void sendPost(用户){
Call Call=api.saveUser(用户);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
字符串消息=“Usuario creado correctamente”;
Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT.show();
设置结果(结果\正常);
完成();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
系统输出打印项次(“失败”);
}
});
}
MainActivity.java

@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
FloatingActionButton fab=findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent Intent=new Intent(getApplicationContext(),CreateUserActivity.class);
startActivityForResult(意向,1);
}
});
ApiService api=RetroClient.getApiService();
Call=api.getUsers();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
回来
}
usersList=response.body().getUser();
usersRecyclerView=(RecyclerView)findviewbyd(R.id.dataTable);
usersAdapter=newusersadapter(usersList);
RecyclerView.LayoutManager usersLayoutManager=newlinearlayoutmanager(getApplicationContext());
usersRecyclerView.setLayoutManager(usersLayoutManager);
setItemAnimator(新的DefaultItemAnimator());
setAdapter(usersAdapter);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==1&&resultCode==RESULT\u确定){
usersAdapter.notifyDataSetChanged();
}
}

因此,在UserAdapter类中创建一个setUserList函数,并在其中使用notifyDatabaseChange(),然后将适配器内部的userlist设置为新列表

 public void setUserList(List<UserList> userList) {
    userList.clear();
    this.userList  = userList;
    notifyDataSetChanged();

}
public void setUserList(List userList){
userList.clear();
this.userList=userList;
notifyDataSetChanged();
}

在notifyDataSetChanged()之后编写mRecyclerView.smoothScrollToPosition(0);@JawadAhmed谢谢你的建议,我根据你的答案解决了我的问题。