大佬教程收集整理的这篇文章主要介绍了删除项目后如何重新加载/刷新 RecyclerView,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试过该站点的许多解决方案。但仍然没有得到有效的解决方案。
这是我的 Fragment 类。我已经在这个类中设置了 Adpater。
public class FeedFragment extends Fragment {
RecyclerVIEw recyclerVIEw;
Context context;
floatingActionbutton addFeedbutton;
private ArrayList<Feed> Feeds;
FeedService FeedService;
FeedRecyclerVIEwAdapter FeedRecyclerVIEwAdapter;
TextVIEw noDataTextVIEw;
@OverrIDe
public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {
VIEw vIEw = inflater.inflate(R.layout.fragment_Feed,container,false);
noDataTextVIEw = vIEw.findVIEwByID(R.ID.no_data_textVIEw);
addFeedbutton = vIEw.findVIEwByID(R.ID.Feed_floating_button);
System.out.println(getRole());
if (getRole().equals("RolE_admin")) {
addFeedbutton.setVisibility(VIEw.VISIBLE);
} else {
addFeedbutton.setVisibility(VIEw.GONE);
}
addFeedbutton.setonClickListener(v -> {
AddFeedFragment addFeedFragment = new AddFeedFragment();
FragmentManager fragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.ID.container_for_fragments,addFeedFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
});
recyclerVIEw = vIEw.findVIEwByID(R.ID.FeedRecyclerVIEw);
recyclerVIEw.setHasFixedSize(true);
linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(context,linearlayoutmanager.VERTICAL,false);
recyclerVIEw.setLayoutManager(linearlayoutmanager);
linearlayoutmanager.setorIEntation(linearlayoutmanager.VERTICAL);
initializeData();
return vIEw;
}
public voID initializeData() {
FeedService = APIUtils.getFeedService();
FeedService.getFeeds(AuthenticationToken()).enqueue(new Callback<List<Feed>>() {
@OverrIDe
public voID onResponse(Call<List<Feed>> call,Response<List<Feed>> response) {
if (response.isSuccessful()) {
if (response != null) {
Feeds = new ArrayList<>(response.body());
if(Feeds.isEmpty()){
noDataTextVIEw.setVisibility(VIEw.VISIBLE);
}
else {
FeedRecyclerVIEwAdapter = new FeedRecyclerVIEwAdapter(getActivity(),Feeds);
recyclerVIEw.setAdapter(FeedRecyclerVIEwAdapter);
}
}
} else {
Toast.makeText(getContext(),"Unauthorized",Toast.LENGTH_LONG).show();
}
}
@OverrIDe
public voID onFailure(Call<List<Feed>> call,Throwable t) {
Toast.makeText(getContext(),t.getMessage(),Toast.LENGTH_LONG).show();
}
});
}
private String AuthenticationToken() {
PrefManager prefManager = new PrefManager(getContext());
return prefManager.Authorization();
}
private String getRole() {
PrefManager prefManager = new PrefManager(getContext());
return prefManager.getRole();
}
}
这是我的适配器类。
public class FeedRecyclerVIEwAdapter extends RecyclerVIEw.Adapter<FeedRecyclerVIEwAdapter.FeedVIEwHolder> {
private ArrayList<Feed> Feeds;
private Context context;
FeedService FeedService;
ProfileService profileService;
public FeedRecyclerVIEwAdapter(Context context,ArrayList<Feed> Feeds) {
this.Feeds = Feeds;
this.context = context;
}
public static class FeedVIEwHolder extends RecyclerVIEw.VIEwHolder {
CardVIEw FeedCardVIEw;
TextVIEw textVIEwTitle,textVIEwDescription,textVIEwPostBy,textVIEwPostDate,textVIEwMobile;
TextVIEw textVIEwOption;
ImageVIEw imageVIEw,callbuttonVIEw;
public FeedVIEwHolder(@NonNull @NotNull VIEw itemVIEw) {
super(itemVIEw);
FeedCardVIEw = itemVIEw.findVIEwByID(R.ID.FeedCardVIEw);
imageVIEw=itemVIEw.findVIEwByID(R.ID.user_photo);
callbuttonVIEw=itemVIEw.findVIEwByID(R.ID.callbutton);
textVIEwTitle = itemVIEw.findVIEwByID(R.ID.FeedTitle);
textVIEwDescription = itemVIEw.findVIEwByID(R.ID.FeedDescription);
textVIEwPostBy = itemVIEw.findVIEwByID(R.ID.postBy);
textVIEwPostDate = itemVIEw.findVIEwByID(R.ID.posDate);
textVIEwMobile = itemVIEw.findVIEwByID(R.ID.mobile);
textVIEwOption = itemVIEw.findVIEwByID(R.ID.three_dot);
}
}
@NonNull
@NotNull
@OverrIDe
public FeedRecyclerVIEwAdapter.FeedVIEwHolder onCreateVIEwHolder(@NonNull @NotNull VIEwGroup parent,int vIEwType) {
VIEw vIEw = LayoutInflater.from(parent.getContext()).inflate(R.layout.Feed_custom_layout,parent,false);
FeedVIEwHolder fvh = new FeedVIEwHolder(vIEw);
return fvh;
}
@OverrIDe
public voID onBindVIEwHolder(@NonNull @NotNull FeedVIEwHolder holder,int position) {
final long itemID = Feeds.get(position).getID();
final String profilePicname=Feeds.get(position).getUser().getProfile().getProfilePic();
profileService= APIUtils.getProfileService();
profileService.loadProfile(AuthenticationToken(),profilePicname).enqueue(new Callback<ResponseBody>() {
@OverrIDe
public voID onResponse(Call<ResponseBody> call,Response<ResponseBody> response) {
System.out.println(response.code());
if(response.isSuccessful()){
try {
byte[] bytes=response.body().bytes();
Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,bytes.length);
GlIDe.with(context).asBitmap()
.load(bitmap)
.apply(Requestoptions.diskCacheStrategyOf(diskCacheStrategy.ALL))
.placeholder(R.drawable.account_circle).into(holder.imageVIEw);
} catch (IOException e) {
e.printstacktrace();
}
}
else{
Toast.makeText(context,"Load Failed",Toast.LENGTH_LONG).show();
}
}
@OverrIDe
public voID onFailure(Call<ResponseBody> call,Throwable t) {
Toast.makeText(context,Toast.LENGTH_LONG).show();
}
});
holder.textVIEwTitle.setText(Feeds.get(position).getFeedTitle());
holder.textVIEwDescription.setText(Feeds.get(position).getFeedDescription());
holder.textVIEwPostBy.setText(Feeds.get(position).getUser().getFullname());
holder.textVIEwPostDate.setText(Feeds.get(position).getPostDate());
holder.textVIEwMobile.setText(Feeds.get(position).getUser().getMobile());
holder.callbuttonVIEw.setonClickListener(v -> {
String phone=Feeds.get(position).getUser().getMobile();
String dialCall="tel:"+phone;
Intent intent=new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(dialCall));
context.startActivity(intent);
});
ItemAnimation.animateFadeIn(holder.itemVIEw,position);
if(getRole().equals("RolE_admin")){
holder.textVIEwOption.setonClickListener(v -> {
PopupMenu popupMenu = new PopupMenu(context,holder.textVIEwOption);
popupMenu.inflate(R.menu.update_delete_menu);
popupMenu.setonMenuItemClickListener(item -> {
switch (item.getItemID()) {
case R.ID.popup_update:
AlertDialog.Builder builder= new AlertDialog.Builder(v.getContext());
builder.setTitle(R.string.dialog_Feed_update_Title);
builder.setPositivebutton(R.string.dialog_yes,(dialog,which) -> {
Intent intent = new Intent(context,FeedUpdateActivity.class);
intent.putExtra("FeedID",itemID);
context.startActivity(intent);
});
builder.setNegativebutton(R.string.dialog_no,which) -> {
Toast.makeText(context.getApplicationContext(),"Canceled",Toast.LENGTH_LONG).show();
});
builder.create().show();
break;
case R.ID.popup_delete:
AlertDialog.Builder builder1 = new AlertDialog.Builder(v.getContext());
builder1.setTitle(R.string.dialog_delete_Title);
builder1.setPositivebutton(R.string.dialog_yes,which) -> {
FeedService = APIUtils.getFeedService();
FeedService.deleteFeed(itemID,AuthenticationToken()).enqueue(new Callback<ResponseBody>() {
@OverrIDe
public voID onResponse(Call<ResponseBody> call,Response<ResponseBody> response) {
if (response.isSuccessful()) {
Toast.makeText(context.getApplicationContext(),"Deleted",Toast.LENGTH_LONG).show();
notifyDataSetChanged();
} else {
Toast.makeText(context.getApplicationContext(),"Delete Failed",Toast.LENGTH_LONG).show();
}
}
@OverrIDe
public voID onFailure(Call<ResponseBody> call,Throwable t) {
Toast.makeText(context.getApplicationContext(),Toast.LENGTH_LONG).show();
}
});
});
builder1.setNegativebutton(R.string.dialog_no,Toast.LENGTH_LONG).show();
});
builder1.create().show();
break;
}
return false;
});
popupMenu.show();
});
}
else{
holder.textVIEwOption.setVisibility(VIEw.GONE);
}
}
@OverrIDe
public voID onAttachedToRecyclerVIEw(@NotNull RecyclerVIEw recyclerVIEw) {
super.onAttachedToRecyclerVIEw(recyclerVIEw);
}
@OverrIDe
public int getItemCount() {
return Feeds.size();
}
private String AuthenticationToken() {
PrefManager prefManager = new PrefManager(context.getApplicationContext());
return prefManager.Authorization();
}
private String getRole() {
PrefManager prefManager = new PrefManager(context.getApplicationContext());
return prefManager.getRole();
}
}
这里我调用了 notifyDataSetChange
。但是它无法刷新 Fragment 类中设置的 arrayList
。在 Adapter 类中完成删除后,如何刷新片段中的 arrayList
。
您可以使用 DiffUtil 将数据加载到 recyclerview 适配器中。对于点击侦听器,您可以在片段本身中实现该方法(在适配器类中创建接口,在片段中实现方法,并将接口的实例传递给适配器的构造函数)。现在,您可以通过更改原始列表来任意操作数据。
以上是大佬教程为你收集整理的删除项目后如何重新加载/刷新 RecyclerView全部内容,希望文章能够帮你解决删除项目后如何重新加载/刷新 RecyclerView所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。