Android 如何在带有片段的RecyclerView适配器中使用RecyclerView?

Android 如何在带有片段的RecyclerView适配器中使用RecyclerView?,android,android-cardview,android-recyclerview,layout-inflater,Android,Android Cardview,Android Recyclerview,Layout Inflater,我的SavedActivity.java: import android.os.Environment; import android.support.v4.app.Fragment; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInfl

我的
SavedActivity.java

import android.os.Environment;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.io.File;
import java.util.ArrayList;

public class SavedActivity extends Fragment {
private static final String Saved  = "/MyApp";
public SavedActivity() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View inflatedView = LayoutInflater.from(container.getContext()).inflate(R.layout.recycler_view_adapter_saved,container, false);
    RecyclerView RecyclerViewMediaList =   (RecyclerView)inflatedView.findViewById(R.id.recycler_View);
    RecyclerViewMediaList.setLayoutManager(new   LinearLayoutManager(getActivity()));
    //Error On the line below
    RecyclerViewAdapterSaved recyclerViewMediaAdapter = new RecyclerViewAdapterSaved(this.getListFiles(new File(Environment.getExternalStorageDirectory().toString()+ Saved)), SavedActivity.this));
    RecyclerViewMediaList.setAdapter(recyclerViewMediaAdapter);
    return inflatedView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

private ArrayList<File> getListFiles(File parentDir) {
    ArrayList<File> inFiles = new ArrayList<>();
    File[] files;
    files = parentDir.listFiles();
    if (files != null) {
        for (File file : files) {
            if (file.getName().endsWith(".jpg"))
            {
                if (!inFiles.contains(file))
                    inFiles.add(file);
            }
        }
    }
    return inFiles;
}
}
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.io.File;
import java.util.ArrayList;

public class RecyclerViewAdapterSaved extends RecyclerView.Adapter<RecyclerViewAdapterSaved.FileHolder> {
private ArrayList<File> filesList;
private Activity activity;

RecyclerViewAdapterSaved(ArrayList<File> filesList, Activity activity){
    this.filesList = filesList;
    this.activity = activity;
}

@Override
public RecyclerViewAdapterSaved.FileHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_adapter_saved, parent, false);
    return new FileHolder(inflatedView);
}

@Override
public void onBindViewHolder(final RecyclerViewAdapterSaved.FileHolder holder, final int position) {
    final File currentFile = filesList.get(position);
    showImages(currentFile,holder,position);


}

@Override
public int getItemCount() {
    return filesList.size();
}

public static class FileHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    ImageView imageViewSaved;
     CardView cardviewImageViewSaved;

    public FileHolder(View itemView) {
        super(itemView);
        imageViewSaved = (ImageView) itemView.findViewById(R.id.imageView);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

    }
public void showImages(final File currentFile, final RecyclerViewAdapterSaved.FileHolder holder, final int position){
    holder.cardviewImageViewSaved.setVisibility(View.VISIBLE);
    Bitmap statusBitmap = BitmapFactory.decodeFile(currentFile.getAbsolutePath());
    holder.imageViewSaved.setImageBitmap(statusBitmap);


}
}
My
RecycleServiceAdapterSaved.java

import android.os.Environment;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.io.File;
import java.util.ArrayList;

public class SavedActivity extends Fragment {
private static final String Saved  = "/MyApp";
public SavedActivity() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View inflatedView = LayoutInflater.from(container.getContext()).inflate(R.layout.recycler_view_adapter_saved,container, false);
    RecyclerView RecyclerViewMediaList =   (RecyclerView)inflatedView.findViewById(R.id.recycler_View);
    RecyclerViewMediaList.setLayoutManager(new   LinearLayoutManager(getActivity()));
    //Error On the line below
    RecyclerViewAdapterSaved recyclerViewMediaAdapter = new RecyclerViewAdapterSaved(this.getListFiles(new File(Environment.getExternalStorageDirectory().toString()+ Saved)), SavedActivity.this));
    RecyclerViewMediaList.setAdapter(recyclerViewMediaAdapter);
    return inflatedView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

private ArrayList<File> getListFiles(File parentDir) {
    ArrayList<File> inFiles = new ArrayList<>();
    File[] files;
    files = parentDir.listFiles();
    if (files != null) {
        for (File file : files) {
            if (file.getName().endsWith(".jpg"))
            {
                if (!inFiles.contains(file))
                    inFiles.add(file);
            }
        }
    }
    return inFiles;
}
}
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.io.File;
import java.util.ArrayList;

public class RecyclerViewAdapterSaved extends RecyclerView.Adapter<RecyclerViewAdapterSaved.FileHolder> {
private ArrayList<File> filesList;
private Activity activity;

RecyclerViewAdapterSaved(ArrayList<File> filesList, Activity activity){
    this.filesList = filesList;
    this.activity = activity;
}

@Override
public RecyclerViewAdapterSaved.FileHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_adapter_saved, parent, false);
    return new FileHolder(inflatedView);
}

@Override
public void onBindViewHolder(final RecyclerViewAdapterSaved.FileHolder holder, final int position) {
    final File currentFile = filesList.get(position);
    showImages(currentFile,holder,position);


}

@Override
public int getItemCount() {
    return filesList.size();
}

public static class FileHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    ImageView imageViewSaved;
     CardView cardviewImageViewSaved;

    public FileHolder(View itemView) {
        super(itemView);
        imageViewSaved = (ImageView) itemView.findViewById(R.id.imageView);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

    }
public void showImages(final File currentFile, final RecyclerViewAdapterSaved.FileHolder holder, final int position){
    holder.cardviewImageViewSaved.setVisibility(View.VISIBLE);
    Bitmap statusBitmap = BitmapFactory.decodeFile(currentFile.getAbsolutePath());
    holder.imageViewSaved.setImageBitmap(statusBitmap);


}
}
导入android.app.Activity;
导入android.content.Intent;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.support.v7.widget.CardView;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入java.io.File;
导入java.util.ArrayList;
公共类RecycleServiceAdapterSaved扩展了RecyclerView.Adapter{
私有ArrayList文件列表;
私人活动;
RecycleServiceAdapterSaved(ArrayList文件列表,活动){
this.filesList=filesList;
这个。活动=活动;
}
@凌驾
public RecycleServiceAdapterSaved.FileHolder onCreateViewHolder(视图组父级,int-viewType){
View inflatedView=LayoutFlater.from(parent.getContext()).inflate(R.layout.recycler\u View\u adapter\u saved,parent,false);
返回新的文件持有者(充气视图);
}
@凌驾
BindViewHolder上的公共无效(最终RecycleServiceAdapterSaved.FileHolder,最终int位置){
最终文件currentFile=filesList.get(位置);
显示图像(当前文件、支架、位置);
}
@凌驾
public int getItemCount(){
返回filesList.size();
}
公共静态类FileHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
ImageView ImageView已保存;
CardView cardviewImageViewSaved;
公共文件持有者(查看项目视图){
超级(项目视图);
imageViewSaved=(ImageView)itemView.findViewById(R.id.ImageView);
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
}
public void showImages(最终文件currentFile,最终回收服务adaptersaved.FileHolder holder,最终整型位置){
holder.cardviewImageViewSaved.setVisibility(View.VISIBLE);
位图状态位图=BitmapFactory.decodeFile(currentFile.getAbsolutePath());
holder.imageViewSaved.setImageBitmap(状态位图);
}
}
ppCompactActivity
中使用时,相同的代码正在工作,但在
Fragment
中使用时显示错误

错误(鼠标悬停在线路上):

RecycleServiceAdapterSaved(ArrayList),android:app.Activity in 无法应用RecycleServiceAdapterSaved


你在这方面有错误

//Error On the line below
RecyclerViewAdapterSaved recyclerViewMediaAdapter = new RecyclerViewAdapterSaved(this.getListFiles(new File(Environment.getExternalStorageDirectory().toString()+ Saved)), SavedActivity.this));
注意:
SavedActivity。在这种情况下,此
不是活动

所以正确的代码是

RecyclerViewAdapterSaved recyclerViewMediaAdapter = new RecyclerViewAdapterSaved(this.getListFiles(new File(Environment.getExternalStorageDirectory().toString()+ Saved)), getActivity()));
getActivity()