簡體   English   中英

如何在Android的ListView中更新圖像

[英]How to update image in listview for android

我想在ListView的ImageView中更改圖像,但是它不起作用。

貝婁是我的數據和列表適配器。

public class Archivedata {
    public String mTo = "";
public ImageView mImage;
public int mID = 0;
public String mText = "";
public String mDate;

}



public class ArchiveListAdapter extends BaseAdapter{
    private LayoutInflater mInflater;
private Vector<Archivedata> mArchiveVector;


public ArchiveListAdapter(Context context, final Vector<Archivedata> data) {
    mArchiveVector = data;
    mInflater = LayoutInflater.from(context);
}

public int getCount() {
    return mArchiveVector.size();
}

public Object getItem(int position) {
    return mArchiveVector.elementAt(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
            if (convertView == null) {
        convertView = mInflater.inflate(R.layout.archive, null);
                holder = new ViewHolder();
        holder.mTxtArchiveDate = (TextView) convertView.findViewById(R.id.date);
        holder.mTxtArchiveText = (TextView) convertView.findViewById(R.id.txtArchiveText);
            holder.mImage = (ImageView) convertView.findViewById(R.id.list_image);
        holder.mTxtArchiveTo = (TextView) convertView.findViewById(R.id.toname);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    Archivedata data = mArchiveVector.elementAt(position);

    holder.mTxtArchiveDate.setText(data.mDate);
    holder.mTxtArchiveText.setText(data.mText);         
    holder.mImage.setImageResource(R.drawable.anonymous_logo);
    holder.mTxtArchiveTo.setText(data.mTo);
        return convertView;
}

    private class ViewHolder {
     TextView mTxtArchiveTo;
     ImageView mImage;
     TextView mTxtArchiveText;
     TextView mTxtArchiveDate;
}

}

這是活動中用於更新圖像的代碼:

private Archives mArchive;
private ArchiveListAdapter mArchiveListAdapter;

for (int i = 0; i < mArchive.mArchive.size(); ++i) {
    Bitmap im = getFacebookPhoto(mArchive.mArchive.elementAt(i).mTo);   
    mArchive.mArchive.elementAt(i).mImage.setImageBitmap(im);
}
mArchiveListAdapter = new ArchiveListAdapter(getActivity(),mArchive.mArchive);
mArchiveListAdapter.notifyDataSetChanged();
mScrollView.setAdapter(mArchiveListAdapter);

它在以下行上返回錯誤:

mArchive.mArchive.elementAt(i).mImage.setImageBitmap(im);

有人可以幫我嗎?

謝謝

我認為順序是錯誤的:

在里面:

mArchiveListAdapter = new ArchiveListAdapter(getActivity(),mArchive.mArchive);
mScrollView.setAdapter(mArchiveListAdapter);

更新:

for (int i = 0; i < mArchive.mArchive.size(); ++i) {
    Bitmap im = getFacebookPhoto(mArchive.mArchive.elementAt(i).mTo);   
    mArchive.mArchive.elementAt(i).mImage.setImageBitmap(im);
}
if(mArchiveListAdapter!=null){
    mArchiveListAdapter.notifyDataSetChanged();
} else {
    //fallback
     mArchiveListAdapter = new ArchiveListAdapter(getActivity(),mArchive.mArchive);
     mScrollView.setAdapter(mArchiveListAdapter);
}

可能已給您一些建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM