Android Recyclerview不使用viewpager刷新片段中的数据
我正在使用recyclerview显示sd卡上的本地图像和视频,当我从片段中删除任何视频或图像时,它会被删除,但不会消失。我必须回去显示数据的变化。我的回收器视图不会自动刷新不会自动刷新。有人能告诉我怎么修吗 这是我的密码 RecyleAdapter.javaAndroid Recyclerview不使用viewpager刷新片段中的数据,android,android-recyclerview,recyclerview-layout,Android,Android Recyclerview,Recyclerview Layout,我正在使用recyclerview显示sd卡上的本地图像和视频,当我从片段中删除任何视频或图像时,它会被删除,但不会消失。我必须回去显示数据的变化。我的回收器视图不会自动刷新不会自动刷新。有人能告诉我怎么修吗 这是我的密码 RecyleAdapter.java public class SavedRecycleAdapter extends RecyclerView.Adapter<SavedRecycleAdapter.MyViewHolder> { private
public class SavedRecycleAdapter extends RecyclerView.Adapter<SavedRecycleAdapter.MyViewHolder> {
private static String DIRECTORY_SAVE_MEDIA = "/storage/emulated/0/Folder/";
private ArrayList <File> filesList;
private Activity activity;
Context context;
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView videosThumbnail, picturesThumbnail;
ImageButton imageDelete, imageShare, videoShare, videoDelete;
CardView videoCardView, imageCardView;
public MyViewHolder(View itemView) {
super(itemView);
picturesThumbnail = itemView.findViewById(R.id.imagesThumbnailSaved);
videosThumbnail = itemView.findViewById(R.id.videosThumbnailSaved);
imageDelete = itemView.findViewById(R.id.imageDeleteSaved);
imageShare = itemView.findViewById(R.id.imageShareSaved);
videoDelete = itemView.findViewById(R.id.videoDeleteSaved);
videoShare = itemView.findViewById(R.id.videoShareSaved);
videoCardView = itemView.findViewById(R.id.videoCardViewSaved);
imageCardView = itemView.findViewById(R.id.imageCardViewSaved);
}
}
public SavedRecycleAdapter(ArrayList <File> filesList, Activity activity) {
this.filesList = filesList;
this.activity = activity;
}
@Override
public SavedRecycleAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflatedView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.saved_item_view, parent, false);
return new SavedRecycleAdapter.MyViewHolder(inflatedView);
}
@Override
public void onBindViewHolder(final SavedRecycleAdapter.MyViewHolder holder, int position) {
final File currentFile = filesList.get(position);
if (currentFile.toString().endsWith(".mp4")) {
holder.videoCardView.setVisibility(View.VISIBLE);
holder.imageCardView.setVisibility(View.GONE);
Glide.with(activity)
.load(Uri.fromFile(new File(currentFile.getAbsolutePath())))
.into(holder.videosThumbnail);
holder.videoDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File file = new File(currentFile.getAbsolutePath());
boolean deleted = file.delete();
//
}
});
holder.videosThumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(activity, VideoViewerActivity.class);
intent.putExtra("video", currentFile.getAbsolutePath());
activity.startActivity(intent);
}
});
holder.videoShare.setOnClickListener(new View.OnClickListener() {
//Do stuff
} else {
holder.videoCardView.setVisibility(View.GONE);
holder.imageCardView.setVisibility(View.VISIBLE);
Glide.with(activity).load(currentFile.getAbsolutePath())
.skipMemoryCache(false)
.crossFade().into(holder.picturesThumbnail);
holder.imageDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File file = new File(currentFile.getAbsolutePath());
boolean deleted = file.delete();
holder.picturesThumbnail.setOnClickListener(new View.OnClickListener() {
// Do stuff
holder.imageShare.setOnClickListener(new View.OnClickListener() {
}
}
@Override
public int getItemCount() {
return filesList.size();
}
}
public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> mFragment = new ArrayList<>();
ArrayList<String> mTitles = new ArrayList<>();
public void addFragments (Fragment fragment,String tabTitles)
{
this.mFragment.add(fragment);
this.mTitles.add(tabTitles);
}
public ViewPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragment.get(position);
}
@Override
public int getCount() {
return mFragment.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles.get(position);
}
公共类SavedRecycleAdapter扩展了RecycleView.Adapter{
私有静态字符串目录_SAVE_MEDIA=“/storage/simulated/0/Folder/”;
私有ArrayList文件列表;
私人活动;
语境;
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
ImageView视频缩略图,图片缩略图;
ImageButton imageDelete、imageShare、videoShare、videoDelete;
CardView videoCardView、imageCardView;
公共MyViewHolder(查看项目视图){
超级(项目视图);
picturesThumbnail=itemView.findViewById(R.id.ImagestHumbnail已保存);
videosThumbnail=itemView.findviewbyd(R.id.videosThumbnail已保存);
imageDelete=itemView.findViewById(R.id.imageDeleteSaved);
imageShare=itemView.findViewById(R.id.imageShareSaved);
videoDelete=itemView.findViewById(R.id.videoDeleteSaved);
videoShare=itemView.findviewbyd(R.id.videoShareSaved);
videoCardView=itemView.findViewById(R.id.videoCardViewSaved);
imageCardView=itemView.findViewById(R.id.imageCardViewSaved);
}
}
public SavedRecycleAdapter(ArrayList文件列表,活动){
this.filesList=filesList;
这个。活动=活动;
}
@凌驾
public SavedRecycleAdapter.MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
View inflatedView=LayoutInflater.from(parent.getContext())
.充气(R.layout.saved_item_视图,父视图,false);
返回新的SavedRecycleAdapter.MyViewHolder(充气视图);
}
@凌驾
BindViewHolder上的公共无效(最终保存dRecycleAdapter.MyViewHolder,int位置){
最终文件currentFile=filesList.get(位置);
if(currentFile.toString().endsWith(“.mp4”)){
holder.videoCardView.setVisibility(View.VISIBLE);
holder.imageCardView.setVisibility(View.GONE);
滑翔(活动)
.load(Uri.fromFile(新文件(currentFile.getAbsolutePath()))
.into(holder.videosthumbail);
holder.videoDelete.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
File File=新文件(currentFile.getAbsolutePath());
布尔删除=file.delete();
//
}
});
holder.videosThumbnail.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(活动,VideoViewerActivity.class);
intent.putExtra(“视频”,currentFile.getAbsolutePath());
活动。开始触觉(意图);
}
});
holder.videoShare.setOnClickListener(新视图.OnClickListener(){
//做事
}否则{
holder.videoCardView.setVisibility(View.GONE);
holder.imageCardView.setVisibility(View.VISIBLE);
Glide.with(activity.load)(currentFile.getAbsolutePath())
.skipMemoryCache(false)
.crossFade()。插入(holder.picturesthumbail);
holder.imageDelete.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
File File=新文件(currentFile.getAbsolutePath());
布尔删除=file.delete();
holder.picturesthumbail.setOnClickListener(新视图.OnClickListener(){
//做事
holder.imageShare.setOnClickListener(新视图.OnClickListener(){
}
}
@凌驾
public int getItemCount(){
返回filesList.size();
}
}
这是我的片段代码
public class SavedStoriesFragment extends Fragment {
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
private static final String FILE_PATH = "/storage/emulated/0/Folder/";
public SavedStoriesFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_saved_stories, container, false);
recyclerView=(RecyclerView)v.findViewById(R.id.savedRecyclerView);
layoutManager = new GridLayoutManager(getContext(),2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new ItemDecorationAlbumColumns(
getResources().getDimensionPixelSize(R.dimen.image_list_space),2));
getListFiles(new File(FILE_PATH));
SavedRecycleAdapter ra = new SavedRecycleAdapter(this.getListFiles(new File(FILE_PATH)), getActivity());
recyclerView.setAdapter(ra);
return v;
}
private ArrayList<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files;
files = parentDir.listFiles();
if (files != null) {
for (File file : files) {
if (file.getName().endsWith(".jpg") ||
file.getName().endsWith(".png") ||
file.getName().endsWith(".jpeg")||
(file.getName().endsWith(".mp4") ||
file.getName().endsWith(".gif"))) {
if (!inFiles.contains(file))
inFiles.add(file);
}
}
}
return inFiles;
}
}
公共类SavedStoriesFragment扩展片段{
回收视图回收视图;
RecyclerView.LayoutManager LayoutManager;
私有静态最终字符串文件_PATH=“/storage/emulated/0/Folder/”;
公共存储方向片段(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment\u saved\u stories,container,false);
recyclerView=(recyclerView)v.findViewById(R.id.savedRecyclerView);
layoutManager=新的GridLayoutManager(getContext(),2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(新的ItemDecoration列)(
getResources().getDimensionPixelSize(R.dimen.image_列表_空间),2);
getListFiles(新文件(文件路径));
savedrecycledapter ra=new savedrecycledapter(this.getListFiles(新文件(文件路径)),getActivity());
recyclerView.setAdapter(ra);
返回v;
}
私有ArrayList getListFiles(文件parentDir){
ArrayList inFiles=新的ArrayList();
文件[]文件;
files=parentDir.listFiles();
如果(文件!=null){
用于(文件:文件){
if(file.getName().endsWith(“.jpg”)||
file.getName().endsWith(“.png”)||
file.getName().endsWith(“.jpeg”)||
(file.getName().endsWith(“.mp4”)||
file.getName().endsWith(“.gif”)){
如果(!inFiles.contains(文件))
inFiles.add(文件);
}
}
}
重新
public void refreshRecyclerView() {
ra.setFilesList(this.getListFiles(new File(FILE_PATH)))
}
public void setFilesList(ArrayList <File> filesList) {
this.filesList = filesList;
notifyDataSetChanged();
}
public class ViewPagerAdapter extends FragmentPagerAdapter
public class ViewPagerAdapter extends FragmentStatePagerAdapter