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);
}
}
MyRecycleServiceAdapterSaved.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()