나는 내부 기억 장치에서 이미지를로드해야만 이론적으로 RecyclerView에 표시 할 수있다. 나는 내가 모든 단계를 바르게 따라 갔다라고 생각한다. 그리고 많은 실패한 시도 후 나는 여기에서 묻고있다. 그래서 나는 어댑터에 데이터를 따라 잡는 코드가 잘못되었다고 생각하지만, 그것을 검증하기 위해 어떤 것도 생각할 수 없다. 어떤 도움, 관측, 제안은 크게 감사드립니다.RecyclerView 아무 것도 보이지 않는다.
(내가 데이터를 얻을)Photos.java :
public class Photos {
static ArrayList<String> filenameListTemp=new ArrayList<>();
static ArrayList<File> photosList=new ArrayList<>();
public static ArrayList<String> getPhotos(File internal){
File listFolers[]=internal.listFiles();
if (listFolers!=null && listFolers.length>0){
for (File file:listFolers) {
if (file.isDirectory()){
getPhotos(file);
}
else {
if (file.getName().endsWith(".png")||file.getName().endsWith(".jpg")||file.getName().endsWith(".gif")||file.getName().endsWith(".bmp")){
String temp =file.getPath().substring(0,file.getPath().lastIndexOf('/'));
if (!filenameListTemp.contains(temp)){
filenameListTemp.add(temp); //This add names
photosList.add(file);// This add Files
}
}
}
}
}
return filenameListTemp;
}
}
RecyclerViewAdapter :
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
Context context;
ArrayList<String> photos=new ArrayList<>();
LayoutInflater layoutinflater;
public RecyclerViewAdapter(Context context, ArrayList<String> photos) {
this.context=context;
this.photos=photos;
layoutinflater=LayoutInflater.from(context);
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=layoutinflater.inflate(R.layout.recyclerview_item_list,parent,false);
RecyclerViewAdapter.ViewHolder holder=new RecyclerViewAdapter.ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(RecyclerViewAdapter.ViewHolder holder, int position) {
holder.image.setImageBitmap(BitmapFactory.decodeFile(photos.get(position)));
}
@Override
public int getItemCount() {
return photos.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView image;
public ViewHolder(View itemView) {
super(itemView);
image= (ImageView) itemView.findViewById(R.id.image);
}
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
RecyclerViewAdapter adapter;
File expath= Environment.getExternalStorageDirectory();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView= (RecyclerView) findViewById(R.id.recyclerview);
adapter=new RecyclerViewAdapter(this, Photos.getPhotos(expath));
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
}
}
내부 저장소에서로드 할 수 있다면 데이터를 기록 했습니까? 귀하의 recyclerview에 표시되는 데이터를 얻지 못하면 사용 가능한 데이터 소스가 없음을 의미 할 수 있습니다. – uncannyj