Java 将我的普通RecyclerView迁移到RecyclerView数据绑定
我有一个问题,当我改变一些值时,比如在我的recyclerview中删除评论,它不会自动更新,谷歌说使用LiveData数据绑定recyclerview,有人曾经做过recyclerview LiveData数据绑定请帮我解决 这是我的MainActivity.javaJava 将我的普通RecyclerView迁移到RecyclerView数据绑定,java,android,android-recyclerview,android-databinding,android-livedata,Java,Android,Android Recyclerview,Android Databinding,Android Livedata,我有一个问题,当我改变一些值时,比如在我的recyclerview中删除评论,它不会自动更新,谷歌说使用LiveData数据绑定recyclerview,有人曾经做过recyclerview LiveData数据绑定请帮我解决 这是我的MainActivity.java public class TabDetailHotActivity extends AppCompatActivity { //GLOBAL public static MainActivity mainActivity_;
public class TabDetailHotActivity extends AppCompatActivity {
//GLOBAL
public static MainActivity mainActivity_;
TextView TVGameDate;
TextView TVGameTitle;
ImageView IMGGameImage;
TextView TVSeenCounter;
TextView TVCommentCounter;
TextView TVLikeCounter;
ImageView IMGSeenView;
ImageView IMGCommentView;
ImageView IMGLikeView;
ImageView ICONHotTrendingNewsSaving;
//EVENT BUS
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MainActivity.EventStoredMessageTrending event) {
getMessageTrendingMainActivity(event.SendMessageUrutan, event.SendTotalThread, event.SendMessageIDComment, event.SendMessageComment, event.SendMessageEntryTime, event.SendMessageisEdited, event.SendMessageEditTime);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MainActivity.EventStoredMessageTrendingLogin event) {
getMessageTrendingLoginMainActivity(event.SendMessageUrutan, event.SendTotalThread, event.SendMessageIDComment, event.SendMessageComment, event.SendMessageEntryTime, event.SendMessageisEdited, event.SendMessageEditTime, event.SendMessageEditable);
}
public void getMessageTrendingMainActivity(int ReceivedMessageUrutan, int ReceivedTotalThread, String ReceivedMessageIDComment, String ReceivedMessageComment, String ReceivedMessageEntryTime, int ReceivedMessageEdited, String ReceivedMessageEditTime){
Toast.makeText(this, "Load Comment Not Login :( >> ReceivedMessageComment:"+ReceivedMessageComment+", Toast.LENGTH_LONG).show();
}
public void getMessageTrendingLoginMainActivity(int ReceivedMessageUrutan, int ReceivedTotalThread, String ReceivedMessageIDComment, String ReceivedMessageComment, String ReceivedMessageEntryTime, int ReceivedMessageEdited, String ReceivedMessageEditTime, int ReceivedMessageEditable){
Toast.makeText(this, "Load Comment Login :) >> ReceivedMessageComment:" + ReceivedMessageComment, Toast.LENGTH_LONG).show();
createDummyDataComment(ReceivedMessageUrutan, ReceivedTotalThread, ReceivedMessageIDComment, ReceivedMessageComment, ReceivedMessageEntryTime, ReceivedMessageEdited, ReceivedMessageEditTime, ReceivedMessageEditable);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activitydetail_tabhot);
ToolbarX = findViewById(R.id.toolbar);
setSupportActionBar(ToolbarX);
getSupportActionBar().setTitle("");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
final CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar);
collapsingToolbarLayout.setTitle("");
Intent intent = getIntent();
mDummyIDContent = intent.getStringExtra("DummyIDContentPKG");
mDummyTitle = intent.getStringExtra("DummyTitlePKG");
mDummyPublishTime = intent.getStringExtra("DummyPublishTimePKG");
mDummyImageOriPKG = intent.getStringExtra("DummyImageOriPKG");
mDummyShortDescription = intent.getStringExtra("DummyShortDescriptionPKG");
mDummySeen = intent.getIntExtra("DummySeenPKG", 0);
mDummyComment = intent.getIntExtra("DummyCommentPKG", 0);
mDummyLike = intent.getIntExtra("DummyLikePKG", 0);
mDummyisComment = intent.getIntExtra("DummyisCommentPKG", 0);
mDummyisLike = intent.getIntExtra("DummyisLikePKG", 0);
mDummyisBookmark = intent.getIntExtra("DummyisBookmarkPKG", 0);
date_Behaviour = findViewById(R.id.date_behavior);
IMGGameImage = findViewById(R.id.backdrop);
TVGameDate = findViewById(R.id.date);
TVGameTitle = findViewById(R.id.title);
TVSeenCounter = findViewById(R.id.TV_SeenCounter);
TVCommentCounter = findViewById(R.id.TV_CommentCounter);
TVLikeCounter = findViewById(R.id.TV_LikeCounter);
RequestOptions requestOptions = new RequestOptions();
requestOptions.error(UtilsNews.getRandomDrawbleColor());
TVGameDate.setText(mDummyPublishTime);
TVGameTitle.setText(mDummyTitle);
TVSeenCounter.setText(String.valueOf(mDummySeen));
TVCommentCounter.setText(String.valueOf(mDummyComment));
TVLikeCounter.setText(String.valueOf(mDummyLike));
Glide.with(this)
.load(mDummyImageOriPKG)
.apply(requestOptions)
.transition(DrawableTransitionOptions.withCrossFade())
.into(IMGGameImage);
/* initWebView(mUrl);*/
ImageButton BTNSendMessageDetailHotTrendingNews = findViewById(R.id.BTN_SendMessageDetailHotTrendingNews);
final TextView ETSendMessageDetailHotTrendingNews = findViewById(R.id.ET_SendMessageDetailHotTrendingNews);
BTNSendMessageDetailHotTrendingNews.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String TheMessage = ETSendMessageDetailHotTrendingNews.getText().toString();
if(!TheMessage.equals("")){
if(mainActivity_!=null) {
mainActivity_.rncryptorLoadSendEditDelete("SendComment", mDummyIDContent, TheMessage);
}
}else{
Toast.makeText(TabDetailHotActivity.this, "You don't send anything", Toast.LENGTH_SHORT).show();
}
ETSendMessageDetailHotTrendingNews.setText("");
}
});
//
if(mainActivity_!=null) {
mainActivity_.rncryptorLoadSendEditDelete("LoadComment", mDummyIDContent, "");
}
}
private void initWebView(String url) {
WebView webView = findViewById(R.id.webView);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(url);
}
ArrayList<ModelDetailHotTrendingNewsComment> modelDetailHotTrendingNewsComments = new ArrayList<ModelDetailHotTrendingNewsComment>();
AdapterDetailHotTrendingNewsComment.RecyclerViewClickListener listenerDetailHotTrendingNewsComment;
public void createDummyDataComment(int ReceivedMessageUrutan, int ReceivedTotalThread, final String ReceivedMessageIDComment, String ReceivedMessageComment, String ReceivedMessageEntryTime, int ReceivedMessageEdited, String ReceivedMessageEditTime, int ReceivedMessageEditable) {
modelDetailHotTrendingNewsComments.add(new ModelDetailHotTrendingNewsComment(ReceivedMessageIDComment,ReceivedMessageComment,ReceivedMessageEntryTime,ReceivedMessageEditable,ReceivedMessageEditTime));
if(ReceivedMessageUrutan == ReceivedTotalThread-1){
listenerDetailHotTrendingNewsComment = new AdapterDetailHotTrendingNewsComment.RecyclerViewClickListener(){
@Override
public void onRowDetailHotTrendingNewsContainerClick(View view, int position) {
}
@Override
public void onRowMessageEditClick(View view, int position) {
}
@Override
public void onRowMessageDeleteClick(View view, final int position) {
String[] YOURCHOICE = {"Yes", "No"};
AlertDialog.Builder builder = new AlertDialog.Builder(TabDetailHotActivity.this);
builder.setTitle("Do you want to delete this comment?");
builder.setItems(YOURCHOICE, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == 0){
Toast.makeText(TabDetailHotActivity.this, "Deleted Successfully!", Toast.LENGTH_SHORT).show();
if(mainActivity_!=null) {
mainActivity_.rncryptorLoadSendEditDelete("DeleteComment", modelDetailHotTrendingNewsComments.get(position).getIdcontent(), "");
}
}else if(which == 1){
Toast.makeText(TabDetailHotActivity.this, "You don't delete the Comment", Toast.LENGTH_SHORT).show();
}
}
});
builder.show();
}
};
RecyclerView RVDetailHotTrendingNewsComment = findViewById(R.id.RVDetail_HotTrendingNewsComment);
RVDetailHotTrendingNewsComment.setHasFixedSize(true);
AdapterDetailHotTrendingNewsComment adapterDetailHotTrendingNewsComment = new AdapterDetailHotTrendingNewsComment(this, modelDetailHotTrendingNewsComments, listenerDetailHotTrendingNewsComment);
RVDetailHotTrendingNewsComment.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
RVDetailHotTrendingNewsComment.setAdapter(adapterDetailHotTrendingNewsComment);
//Optimized
RVDetailHotTrendingNewsComment.setHasFixedSize(true);
RVDetailHotTrendingNewsComment.setItemViewCacheSize(20);
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
@Override
public void onBackPressed() {
super.onBackPressed();
supportFinishAfterTransition();
}
//EVENTBUS
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
公共类TabDetailHotActivity扩展了AppCompatActivity{
//全球的
公共静态main活动main活动;
TextView-TVGameDate;
文本视图TVGameTitle;
ImageView IMGGameImage;
文本视图TVSeenCounter;
文本视图计数器;
文本视图TVLikeCounter;
ImageView-IMGSeenView;
ImageView-IMGCommentView;
ImageView-IMGLikeView;
ImageView ICONHotTrendingNewsSaving;
//事件总线
@订阅(threadMode=threadMode.MAIN)
消息事件上的公共无效(MainActivity.EventStoredMessageRending事件){
getMessageTrendingMainActivity(event.SendMessageUrutan、event.SendTotalThread、event.SendMessageIDComment、event.SendMessageComment、event.SendMessageEntryTime、event.SendMessageisEdited、event.SendMessageEditTime);
}
@订阅(threadMode=threadMode.MAIN)
消息事件上的公共无效(MainActivity.EventStoredMessageRendingLogin事件){
getMessageTrendingLoginMainActivity(event.SendMessageUrutan、event.SendTotalThread、event.SendMessageIDComment、event.SendMessageComment、event.SendMessageEntryTime、event.SendMessageisEdited、event.SendMessageEditTime、event.SendMessageEditable);
}
public void GetMessageTrendingMain活动(int-ReceivedMessageUrutan、int-ReceivedTotalThread、String-ReceivedMessageEdComment、String-ReceivedMessageComment、String-ReceivedMessageComment、String-ReceivedMessageEntryTime、int-ReceivedMessageEdited、String-ReceivedMessageEditTime){
Toast.makeText(这是“加载注释而不是登录:(>>ReceivedMessageComment:+ReceivedMessageComment+”,Toast.LENGTH_LONG).show();
}
public void GetMessageTrendingLoginActive(int-ReceivedMessageUrutan、int-ReceivedTotalThread、String-ReceivedMessageGeidComment、String-ReceivedMessageComment、String-ReceivedMessageEntryTime、int-ReceivedMessageEdited、String-ReceivedMessageEditTime、int-ReceivedMessageEditable){
Toast.makeText(这是“加载注释登录:)>>ReceivedMessageComment:“+ReceivedMessageComment,Toast.LENGTH_LONG).show();
CreatedUMYDataComment(ReceivedMessageUrutan、ReceivedTotalThread、ReceivedMessageComment、ReceivedMessageEntryTime、ReceivedMessageEdited、ReceivedMessageEditTime、ReceivedMessageEditable);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activitydetail_选项卡);
ToolbarX=findViewById(R.id.toolbar);
设置支持操作栏(工具栏X);
getSupportActionBar().setTitle(“”);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
最终折叠工具栏布局折叠工具栏布局=findViewById(R.id.collaving_toolbar);
折叠ToolbarLayout.setTitle(“”);
Intent=getIntent();
mDummyIDContent=intent.getStringExtra(“DummyIDContentPKG”);
mDummyTitle=intent.getStringExtra(“dummytilepkg”);
mDummyPublishTime=intent.getStringExtra(“DummyPublishTimePKG”);
mDummyImageOriPKG=intent.getStringExtra(“DummyImageOriPKG”);
mDummyShortDescription=intent.getStringExtra(“DummyShortDescriptionPKG”);
mDummySeen=intent.getIntExtra(“DummySeenPKG”,0);
mDummyComment=intent.getIntExtra(“DummyCommentPKG”,0);
mDummyLike=intent.getIntExtra(“DummyLikePKG”,0);
mdummyiscommentpkg=intent.getIntExtra(“DummyisCommentPKG”,0);
mDummyisLike=intent.getIntExtra(“DummyisLikePKG”,0);
mDummyisBookmark=intent.getIntExtra(“DummyisBookmarkPKG”,0);
date_behavior=findViewById(R.id.date_behavior);
IMGGameImage=findviewbyd(R.id.background);
TVGameDate=findViewById(R.id.date);
TVGameTitle=findviewbyd(R.id.title);
TVSeenCounter=findviewbyd(R.id.TV\u SeenCounter);
TVComentCounter=findViewById(R.id.TV\U CommentCounter);
TVLikeCounter=findViewById(R.id.TV_-LikeCounter);
RequestOptions RequestOptions=newrequestoptions();
错误(UtilsNews.getRandomDrawbleColor());
TVGameDate.setText(mDummyPublishTime);
TVGameTitle.setText(mDummyTitle);
TVSeenCounter.setText(String.valueOf(mDummySeen));
TVComentCounter.setText(String.valueOf(mDummyComment));
TVLikeCounter.setText(String.valueOf(mDummyLike));
用(这个)滑翔
.加载(mDummyImageOriPKG)
.apply(请求选项)
.transition(DrawableTransitionOptions.withCrossFade())
.into(IMGGameImage);
/*initWebView(mUrl)*/
ImageButton BTNSendMessageDetailHotTrendingNews=findViewById(R.id.BTN\u SendMessageDetailHotTrendingNews);
最终文本视图ETSendMessageDetailHotTrendingNews=findViewById(R.id.ET_SendMessageDetailHotTrendingNews);
BTNSendMessageDetailHotTrendingNews.setOnClickListener(新视图。OnClickListener(){
@凌驾
公共void onClick(视图){
字符串TheMessage=ETSendMessageDetailHotTrendingNews.getText().toString();
如果(!TheMessage.equals(“”){
if(main活动\!=null){
Main Activity_uu.rncryptorLoadSendEditDelete(“SendComment”,mDummyIDContent,TheMessage);
}
}否则{
Toast.makeText(TabDetailHotActivity.this,“您不发送任何东西”,Toast.LENGTH\u SHORT.show();
}
ETSendMessageDetailHotTrendingNews.setText(“”);
}
});
//
if(main活动\!=null){
mainActivity.rncryptorLoadSendEditDelete(“LoadComment”,mDummyIDContent,”);
}
}
私有void initWebView(字符串url){
WebView-WebView=findviewbyd(R.id.WebView);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuilt