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