如何在android上的绑定视图中检索图像?

时间:2018-01-02 11:30:15

标签: android firebase firebase-realtime-database picasso

我有一个聊天消息视图,其中显示用户名和图像和消息,在我的消息适配器类中如下

public void onBindViewHolder(final MessageViewHolder holder, int position) {

        auth = FirebaseAuth.getInstance();
        String currenUserId = auth.getCurrentUser().getUid();
        Message c = mMessageList.get(position);
        String fromUser = c.getFrom();
        reference = FirebaseDatabase.getInstance().getReference().child("Users");

        reference.child(fromUser).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String name = dataSnapshot.child("name").getValue().toString();
                String image = dataSnapshot.child("image").getValue().toString();

                holder.messageName.setText(name);

                if(!image.equals("default")) {
                    Picasso.with().load(image).placeholder(R.drawable.avatar).into(holder.messageProfile);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        holder.messageText.setText(c.getMessage());

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(c.getTime());
        int mHour = calendar.get(Calendar.HOUR_OF_DAY);
        int mMin = calendar.get(Calendar.MINUTE);
        holder.messageTime.setText(mHour+":"+mMin);
    }
  

我正在使用毕加索来检索图像我应该用作上下文

3 个答案:

答案 0 :(得分:1)

你也只使用这个

Picasso.with(holder.messageProfile.getContext()).load(image).placeholder(R.drawable.avatar).into(holder.messageProfile);

答案 1 :(得分:0)

您必须使用Context的父视图的UserViewHolder作为

public class RecyclerViewAdapter extends 
RecyclerView.Adapter<RecyclerViewAdapter.UserViewHolder>{

private Context context;

@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    context = parent.getContext();    //use this context with picasso

    return new UserViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_home_screen, parent, false));
}

答案 2 :(得分:0)

首先在全球范围内声明上下文

Context context;

之后添加构造函数

 this.context = context;  

将此用于图片

 Glide.with(context).load(R.drawable.avatar).into(holder.messageProfile);
相关问题