Tanvir Durlove
Tanvir Durlove

Reputation: 788

Loading image from server using glide in viewholder

public class MyAdapter_home extends RecyclerView.Adapter<MyAdapter_home.MyAdapter_HomeViewHolder> {


private List<Datum> data;
private List<Datum2>data2;
private int rowLayout;
private Context context;
PopupMenu popupMenu ;


public MyAdapter_home(List<Datum> data, int rowLayout, Context context) {
    this.data = data;
    this.rowLayout = rowLayout;
    this.context = context;
}



@Override
public MyAdapter_HomeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_item_home, parent, false);
    return new MyAdapter_HomeViewHolder(view);
}

@Override
public void onBindViewHolder(final MyAdapter_HomeViewHolder holder, final int position) {



    holder.userNameTV.setText(data.get(position).getUserInfo().getFullName());
    holder.msgBodyTV.setText(data.get(position).getBody());
    holder.originator_iD.setText(data.get(position).getUserInfo().getId().toString());
    holder.imV.setImageURI(Uri.parse(Uri.parse(data.get(position).getUserInfo().getAvatar()).getPath()));
    holder.owner_type_ET.setText("1");
    holder.subject_ET.setText("Message");




    holder.mCardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(view.getContext(), Single_Message.class);
            intent.putExtra("ORIGINATOR_ID", holder.originator_iD.getText().toString());
            intent.putExtra("OWNER_TYPE", holder.owner_type_ET.getText().toString());
            intent.putExtra("SUBJECT", holder.subject_ET.getText().toString());
            intent.putExtra("USERNAME", holder.userNameTV.getText().toString());
            view.getContext().startActivity(intent);


        }
    });

    holder.mCardView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(final View view) {

            popupMenu = new PopupMenu(view.getContext(), view);
            popupMenu.setOnDismissListener(new PopupMenu.OnDismissListener() {
                @Override
                public void onDismiss(PopupMenu menu) {

                }
            });
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.lang_java:
                            Intent intent = view.getContext().getPackageManager().getLaunchIntentForPackage("com.freemig.social");
                            if (intent != null) {
                                // We found the activity now start the activity
                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                view.getContext().startActivity(intent);
                            } else {
                                // Bring user to the market or let them choose an app?
                                intent = new Intent(Intent.ACTION_VIEW);
                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                intent.setData(Uri.parse("market://details?id=" + "com.freemig.social"));
                                view.getContext().startActivity(intent);
                            }
                            return true;
                        case R.id.lang_android:
                            Toast.makeText(view.getContext(), "Mute Conversation clicked",
                                    Toast.LENGTH_SHORT).show();
                            return true;
                        case R.id.lang_python:
                            Toast.makeText(view.getContext(), "Remove User clicked",
                                    Toast.LENGTH_SHORT).show();
                            return true;
                        case R.id.lang_ruby:
                            Toast.makeText(view.getContext(), "Block User clicked",
                                    Toast.LENGTH_SHORT).show();
                            return true;
                    }
                    return false;
                }
            });
            popupMenu.inflate(R.menu.popup_home_long_click);
            popupMenu.show();
            return false;
        }
    });
}

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

public static class MyAdapter_HomeViewHolder extends RecyclerView.ViewHolder {

    TextView userNameTV;
    TextView msgBodyTV;
    CardView mCardView;
    TextView originator_iD;
    ImageView imV;
    String s;

    ConversationAPIService conversationAPIService;
    EditText owner_type_ET, subject_ET;


    public MyAdapter_HomeViewHolder(View itemView) {
        super(itemView);
        userNameTV = (TextView) itemView.findViewById(R.id.username);
        msgBodyTV = itemView.findViewById(R.id.msgbody);
        mCardView = (CardView) itemView.findViewById(R.id.card_view);
        originator_iD = itemView.findViewById(R.id.frIdET);
        imV = itemView.findViewById(R.id.iv_image);
        owner_type_ET = (EditText) itemView.findViewById(R.id.owner_typeET);
        subject_ET = (EditText) itemView.findViewById(R.id.subjectET);
    }
}
}

This is my adapter class for a recyclerView. I want to show image avatar from here. I don't understand how to it. What I tried -

  1. Glide documentation but not understand
  2. In stackoverflow everyone use static URL that previously defined.But my url is generating randomly and how to use that URL
  3. I tried to use bitmap. but can't figure it out. How to do it?

Upvotes: 2

Views: 11069

Answers (5)

Upendra Shah
Upendra Shah

Reputation: 2301

You can use Picasso library. Image loading using Picasso is very easy, you can do it like this way:

Uri imageURI = Uri.parse(Uri.parse(data.get(position).getUserInfo().getAvatar()).getPath());
Picasso.with(context).load("imageURI").into(holder.imV);

and in their website you can get every details.

and another library is Glide. You can use Glide too for loading image.

You can also use Glide:

Uri imageURI = Uri.parse(Uri.parse(data.get(position).getUserInfo().getAvatar()).getPath());
Glide.with(context).load(imageURI).asBitmap().placeholder(R.drawable.placeholder)
         .error(R.drawable.error).into(holder.imV);

Upvotes: 2

Rahul Patil
Rahul Patil

Reputation: 129

You can also used UniversalImageLoader library.

    universalImageLoader imageLoader =new universalImageLoader();

  imageLoader.loadImage(imageUri, targetSize, options, new SimpleImageLoadingListener() {
      @Override
      public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        // use your bitmap …
      }
    });

For more information refer Android-Universal-Image-Loader

OR

You can used Glide Library in your Application. and you used load image in any adapter class so try this .

  String url = your_array_list.get(position); 

 GlideApp.with(myFragment).load(url).centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);

For more information refer glide

Upvotes: 2

Shweta Chauhan
Shweta Chauhan

Reputation: 6981

Try this:

Glide.with(context)
.load("your image url")
.into(holder.imV);

Upvotes: 0

ND1010_
ND1010_

Reputation: 3841

Try this :

 GlideApp
    .with(context)
    .load(url)
    .centerCrop() //cropping center image 
    .placeholder(R.drawable.loading_spinner) //placeholder while loading image 
    .into(viewHodler.myImageView);

Upvotes: 1

Muthukrishnan Rajendran
Muthukrishnan Rajendran

Reputation: 11642

You can log like this,

Uri uri = Uri.parse(Uri.parse(data.get(position).getUserInfo().getAvatar()).getPath());
Glide.with(context).load(uri).into(holder.imV);

Upvotes: 3

Related Questions