0
当从列表视图中的网络图像视图传递一个位图到一个片段时,我收到了一些奇怪的行为。从列表视图适配器传递位图到片段奇怪的行为
我从列表视图适配器中的URL加载图像,然后当点击列表视图项时,来自该列表视图的图像被用作片段中的背景。但是,当我这样做时,在片段中显示错误的图像,所显示的图像是当前在屏幕上可见的列表视图底部的项目。
这里是我的适配器设置列表视图:
public class EventListAdapter extends BaseAdapter {
Context context;
public static ArrayList<EventObject> eventList;
private LayoutInflater mInflater;
private Bitmap bitmap;
private NetworkImageView img_main;
private RelativeLayout layoutItem;
private TextView txt_event_name;
private TextView txt_event_details;
public EventListAdapter(Context context, ArrayList<EventObject> eventList) {
this.context = context;
this.eventList = eventList;
mInflater = LayoutInflater.from(context);
}
public void addItems(ArrayList<EventObject> eventList) {
this.eventList.addAll(eventList);
notifyDataSetChanged();
}
@Override
public int getCount() {
return eventList.size();
}
@Override
public Object getItem(int position) {
return eventList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@SuppressLint("all")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
try {
// reuse of convertView
if (convertView == null) {
layoutItem = (RelativeLayout) mInflater.inflate(R.layout.view_event_list_item, parent, false);
} else {
layoutItem = (RelativeLayout) convertView;
}
img_main = (NetworkImageView) layoutItem.findViewById(R.id.img_main);
txt_event_details = (TextView) layoutItem.findViewById(R.id.txt_event_details);
txt_event_name = (TextView) layoutItem.findViewById(R.id.txt_event_name);
txt_event_name.setTypeface(FontClass.getOpenSansRegular(context));
txt_event_details.setTypeface(FontClass.getOpenSansLight(context));
img_main.setDefaultImageResId(R.drawable.ic_weekends_matter_black);
img_main.setImageUrl(eventList.get(position).getImageUrl(), new ImageLoader(NetworkManager.getInstance().requestQueue, new LruBitmapCache()));
txt_event_name.setText(eventList.get(position).getEventName());
txt_event_details.setText(eventList.get(position).getVenueName() + ", " + getFormattedDate(eventList.get(position).getEventDate()));
layoutItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((HomeActivity) context).setEventProfileFrag(eventList.get(position).getFullJsonObject(), ((BitmapDrawable)img_main.getDrawable()).getBitmap());
}
});
} catch (Exception e) {
e.printStackTrace();
}
notifyDataSetChanged();
return layoutItem;
}
private String getFormattedDate(String dateString) throws ParseException {
//"2016-06-27 16:00:00"
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.UK);
Date newDate = format.parse(dateString);
format = new SimpleDateFormat("EEEE dd MMMM", Locale.UK);
String date = format.format(newDate);
return date;
}
}
然后终于在片段我检索到的片段传递参数图片:
mParam2 = BitmapFactory.decodeByteArray(getArguments().getByteArray(ARG_PARAM2), 0, getArguments().getByteArray(ARG_PARAM2).length);
img_header.setImageBitmap(mParam2);
显示您的适配器类。 – Drv
@Drv添加了它.. – MichaelStoddart