1
나는 recyclerview에서 이미지를 표시하는 데 picasso를 사용하지만 이미지로드가 완료되면 항목을 자동 새로 고치지 않으므로 이미지를 표시하도록 수동으로 스크롤해야합니다. 내가 무엇을 수정해야합니까, recyclerview의 항목을 자동으로로드를 완료하면 디스플레이를 업데이 트합니까?로드가 완료되면 recyclerview의 Picasa가 자동으로 디스플레이를 새로 고칠 수 없습니까?
이 내 어댑터 클래스입니다 :
public class LocationListRecyclerViewAdapter extends RecyclerView
.Adapter<LocationListRecyclerViewAdapter
.DataObjectHolder> {
private static String LOG_TAG = "LocationListRecyclerViewAdapter";
private ArrayList<LocationObject> mDataset;
private static MyClickListener myClickListener;
private Context mContext;
static String imageUrls;
public static String[] thumbnailUrl;
private LayoutInflater inflater;
public LocationListRecyclerViewAdapter(Context context, ArrayList<LocationObject> mDataset) {
this.mContext = context;
this.mDataset = mDataset;
}
public static class DataObjectHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView locName;
TextView locAddress;
TextView locDistance;
RoundedImageView roundedImageView;
public DataObjectHolder(View itemView) {
super(itemView);
this.locName = (TextView) itemView.findViewById(R.id.location_name);
this.locAddress = (TextView) itemView.findViewById(R.id.location_address);
this.locDistance = (TextView) itemView.findViewById(R.id.location_distance);
this.roundedImageView = (RoundedImageView) itemView.findViewById(R.id.thumbnail_location);
Log.i(LOG_TAG, "Adding Listener");
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
myClickListener.onItemClick(getAdapterPosition(), v);
}
}
public void setOnItemClickListener(MyClickListener myClickListener) {
this.myClickListener = myClickListener;
}
public LocationListRecyclerViewAdapter(ArrayList<LocationObject> myDataset) {
mDataset = myDataset;
}
@Override
public DataObjectHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.location_listcard_item, parent, false);
this.mContext = parent.getContext();
thumbnailUrl = new String[10];
TextView locName = (TextView) view.findViewById(R.id.location_name);
TextView locAddress = (TextView) view.findViewById(R.id.location_address);
TextView locDistance = (TextView) view.findViewById(R.id.location_distance);
Typeface helvetica = Typeface.createFromAsset(parent.getContext().getApplicationContext().getAssets(),"fonts/Helvetica.otf");
locName.setTypeface(helvetica);
locAddress.setTypeface(helvetica);
locDistance.setTypeface(helvetica);
DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
return dataObjectHolder;
}
> @Override
> public void onBindViewHolder(DataObjectHolder holder, int position) {
LocationObject item = mDataset.get(position);
holder.locName.setText(mDataset.get(position).getLocationName());
holder.locAddress.setText(mDataset.get(position).getLocationAddress());
holder.locDistance.setText(String.valueOf(mDataset.get(position).getLocationDistance())+"m");
Log.i(position+" photos"," = "+mDataset.get(position).getLocationPhoto());
//mContext
Picasso.with(holder.roundedImageView.getContext()).cancelRequest(holder.roundedImageView);
Picasso.with(holder.roundedImageView.getContext())
.load(mDataset.get(position).getLocationPhoto())
.error(R.drawable.placeholder)
.placeholder(R.drawable.placeholder)
.resize(200,200)
.into(holder.roundedImageView);
holder.itemView.setTag(item);
}
public void addItem(LocationObject dataObj, int index) {
mDataset.add(index, dataObj);
notifyItemInserted(index);
}
public void deleteItem(int index) {
mDataset.remove(index);
notifyItemRemoved(index);
}
@Override
public int getItemCount() {
return mDataset.size();
}
public interface MyClickListener {
public void onItemClick(int position, View v);
}
}
여전히 같은 형제, 자동으로 항목을 다시 표시하지 않습니다,하지만 난 그것을 chaged 이미지를 스크롤 할 때 :/ – mozaex
을 난 아직 못해 자동 업데이트 형제를 제거했지만, 여전히 작동하지 디스플레이 – mozaex