-1
public void onBindViewHolder(MyAdapter.MyViewHolde holder, int position) { 
     //how to set image for loading the images for gallery 



---------- 


} 

//と主な活動にギャラリーから画像を取得する方法のコードはどのようにrecyclerviewを使用して自分のアプリケーションにギャラリーからのすべての画像を取得する?とどのようにlodingギャラリー画像について[OnBind]のホルダーに画像を設定する

+0

こんにちは延び、スタックオーバーフローを歓迎。質問をして質問を更新する方法の詳細については、 の[ask]リンクを参照してください。 –

答えて

0

あなたが最初にすべての、すべてのimages-

private ArrayList<String> getAllShownImagesPath(Activity activity) { 
     Uri uri; 
     Cursor cursor; 
     int column_index_data, column_index_folder_name; 
     ArrayList<String> listOfAllImages = new ArrayList<String>(); 
     String absolutePathOfImage = null; 
     uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 

     String[] projection = { MediaColumns.DATA, 
       MediaStore.Images.Media.BUCKET_DISPLAY_NAME }; 

     cursor = activity.getContentResolver().query(uri, projection, null, 
       null, null); 

     column_index_data = cursor.getColumnIndexOrThrow(MediaColumns.DATA); 
     column_index_folder_name = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); 
     while (cursor.moveToNext()) { 
      absolutePathOfImage = cursor.getString(column_index_data); 

      listOfAllImages.add(absolutePathOfImage); 
     } 
     return listOfAllImages; 
    } 

今これを設定を取得する方法以下RecyclerView

使用するようにイメージのリストを設定する必要があり、あなたの活動にギャラリーからすべての画像を取得する必要があります画像のリストRecyclerViewアダプタ。

これを受け入れると、すべてのギャラリー画像を設定することができます。

+0

それは動作している、画像の読み込みload.i asynタスクを使用してより多くの時間がかかりますが、 – venkatmaddy

+0

はい、画像を読み込むのに時間がかかることがあります。画像の しかし、[グライドの例](https://stackoverflow.com/a/39219995/6676466)を使用すると、イメージをレンダリングする時間を短縮できます。この依存関係をbuild.gradle 'compile 'com.github.bumptech.glide:glide:4.0.0''に追加してください。 –

+0

私は常にイメージを読み込むためにのみglide libを使います。ここでもglide libを使っていますが、動作していません....同じ問題が発生しています。 – venkatmaddy

0

このGet list of photo galleries on Androidはあなたを助けます.. 私がここに追加したいことの1つは、AsyncTaskまたはThread内でデータを取得するギャラリーを追加する必要があることです。ギャラリーの画像がUIトレッドでの処理のためANRになる可能性があるため、ギャラリーのデータをUIスレッドでフェッチするのは良い方法ではありません。

+0

はい、私はそれに同意する、今私は画像を取得するasynctaskまたはスレッドを使用する必要があります – venkatmaddy

1
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolde> { 
    Context context; 
    private ArrayList<String> imageData = new ArrayList<String>(); 


    public MyAdapter(ArrayList<String> imageData, FragmentActivity activity) { 
     this.imageData = imageData; 
     this.context = activity; 
    } 

    @Override 
    public MyAdapter.MyViewHolde onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.inflate_single_image_row, parent, false); 

     return new MyViewHolde(itemView); 
    } 

    @Override 
    public void onBindViewHolder(MyAdapter.MyViewHolde holder, int position) { 
     String data = imageData.get(position); 
     if (data != null){ 
      Glide.with(context).load(data).into(holder.singleImageView); 

     }else { 
      Toast.makeText(context, "Images Empty", Toast.LENGTH_SHORT).show(); 
     } 


    } 

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

    public class MyViewHolde extends RecyclerView.ViewHolder { 
     ImageView singleImageView; 

     public MyViewHolde(View itemView) { 
      super(itemView); 
      singleImageView = (ImageView) itemView.findViewById(R.id.singleImageView); 
     } 
    } 
} 
0

パブリッククラスGalleryFragmentフラグメント{

public GalleryFragment() { 
    // Required empty public constructor 
} 

private Context context; 
private RecyclerView recyclerView; 
ArrayList<String> imageData; 
MyAdapter adapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_gallery, container, false); 
    context = getActivity(); 

    recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); 
    recyclerView.setHasFixedSize(true); 

    RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 3); 
    recyclerView.setLayoutManager(layoutManager); 

    MyTask myTask = new MyTask(); 
    myTask.execute(); 

    return view; 
} 

private class MyTask extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     imageData = getAllShownImagesPath(getActivity()); 
     Log.e("imageData: ", String.valueOf(imageData.size())); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     adapter = new MyAdapter(imageData, getActivity()); 
     recyclerView.setAdapter(adapter); 

    } 

} 

private ArrayList<String> getAllShownImagesPath(Activity activity) { 
    Uri uri; 
    Cursor cursor; 
    int column_index_data, column_index_folder_name; 
    ArrayList<String> listOfAllImages = new ArrayList<String>(); 
    String absolutePathOfImage = null; 
    uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 

    String[] projection = {MediaStore.MediaColumns.DATA, 
      MediaStore.Images.Media.BUCKET_DISPLAY_NAME}; 

    cursor = activity.getContentResolver().query(uri, projection, null, 
      null, null); 

    column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
    column_index_folder_name = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); 
    while (cursor.moveToNext()) { 
     absolutePathOfImage = cursor.getString(column_index_data); 

     listOfAllImages.add(absolutePathOfImage); 
    } 
    return listOfAllImages; 
} 

}

+0

あなたのアダプタコードも投稿してください... あなたの質問に答えとして編集しないでください。 –

+0

すでにmyadapterコードを投稿していますが、ギャラリーframent.iがmyadapterを投稿する前に表示されています。 – venkatmaddy

関連する問題