【问题标题】:how to inflate recyclerviewadapter in recyclerview in fragment?如何在片段中的 recyclerview 中为 recyclerviewadapter 充气?
【发布时间】:2018-01-22 07:11:16
【问题描述】:

我的 SavedActivity.java:

public class SavedActivity extends Fragment {
private static final String MyApp = "/MyApp";
RecyclerView RecyclerViewMediaList;
LinearLayoutManager mLinearLayoutManager;
public SavedActivity() {
    // Required empty public constructor
}


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

}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View inflatedView = inflater.inflate(R.layout.activity_saved, container, false);
    RecyclerViewMediaList = (RecyclerView)container.findViewById(R.id.recycler_View);
adaptRecyclerView();
return inflatedView;
 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;
}

public void adaptRecyclerView(){

    mLinearLayoutManager = new LinearLayoutManager(getContext());
    RecyclerViewMediaList.setLayoutManager(mLinearLayoutManager);
    RecyclerViewAdapterSaved recyclerViewMediaAdapter = new RecyclerViewAdapterSaved(this.getListFiles(new File(Environment.getExternalStorageDirectory().toString()+ MyApp)), getActivity());
    RecyclerViewMediaList.setAdapter(recyclerViewMediaAdapter);
}

我的 RecyclerViewAdapterSaved.java:

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


public 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, true);
    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);
public void showImages(final File currentFile, final RecyclerViewAdapterSaved.FileHolder holder, final int position){
    holder.cardviewImageViewSaved.setVisibility(View.VISIBLE);
    Bitmap myBitmap = BitmapFactory.decodeFile(currentFile.getAbsolutePath());
    holder.imageViewSaved.setImageBitmap(myBitmap);
}
}

我试图在activity_saved.xml 中提供的RecyclerView 中膨胀recycler_view_adapter_saved.xml,当我尝试这样做时,代码运行良好,但RecyclerView 中没有视图。上面的代码对膨胀布局是否正确?还是有任何其他方法可以做到这一点?.同时改变 View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_adapter_saved, parent, false); 它正在显示另一个片段中的输出。

【问题讨论】:

    标签: android android-studio android-fragments android-recyclerview layout-inflater


    【解决方案1】:

    在你的 Viewholder 中试试这个

        View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_adapter_saved, parent, false);
    

    【讨论】:

    • 现在它正在显示图像,但不在 Fragment(SavedActivity.java) 中。它在另一个 Fragment(Available.java) 中显示
    • Available.java 在哪里?它与 SavedActivity 有什么关系?
    【解决方案2】:

    试试这个,你必须在onCreateView方法上返回将在这个fragment上膨胀的视图

    public class SavedActivity extends Fragment {
        private static final String MyApp = "/MyApp";
        RecyclerView recyclerViewMediaList;
        LinearLayoutManager mLinearLayoutManager;
        public SavedActivity() {
            // Required empty public constructor
        }
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View inflatedView = inflater.inflate(R.layout.activity_saved, container, false);
            recyclerViewMediaList = (RecyclerView)container.findViewById(R.id.recycler_View);
            adaptRecyclerView(); 
            return inflatedView;
        }
    
        public void adaptRecyclerView(){
            mLinearLayoutManager = new LinearLayoutManager(getContext());
            recyclerViewMediaList.setLayoutManager(mLinearLayoutManager);
            RecyclerViewAdapterSaved recyclerViewMediaAdapter = new RecyclerViewAdapterSaved(this.getListFiles(new File(Environment.getExternalStorageDirectory().toString()+ MyApp)), getActivity());
            recyclerViewMediaList.setAdapter(recyclerViewMediaAdapter);
        }
    
        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);
                    }
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多