データベースから画像の URL を取得するリストがあります。URL を取得したら、次のコードを使用してそれらをドローアブルに保存します。
private Drawable LoadImageFromWebOperations(String url){
try{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}
}
次に、ドローアブルをリンクされたリストに保存し、他の画像の URL を取得し続けます。これが完了すると、画像が表示されます。私が抱えている問題は、URL を正常に取得することですが、アプリに表示されると最初の 2 つの画像は良好ですが、スクロールして 3 番目の画像を表示すると最初の画像が表示されます。これについて何か考えはありますか? ?
getview とカスタム リストのコードは次のとおりです。
private class RowData {
protected int mId;
protected String mTitle;
RowData(int id,String title){
mId=id;
mTitle = title;
}
@Override
public String toString() {
return mId+" "+mTitle+" ";
}
}
private class CustomAdapter extends ArrayAdapter<RowData> {
public CustomAdapter(Context context, int resource,
int textViewResourceId, List<RowData> objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
TextView title = null;
TextView date = null;
TextView detail = null;
ImageView i11=null;
String postDate;
RowData rowData= getItem(position);
if(null == convertView){
convertView = mInflater.inflate(R.layout.newspg, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
title = holder.gettitle();
title.setText(rowData.mTitle);
postDate = getpostDate(news, rowData.mTitle );
Log.i("Date",postDate);
date = holder.getDate();
date.setText(postDate);
i11=holder.getImage(position);
Log.i("pos",Integer.toString(position));
//i11.setImageResource(imgid[0]);
return convertView;
}
private class ViewHolder {
private View mRow;
private TextView title = null;
private TextView date = null;
private TextView detail = null;
private ImageView i11=null;
public ViewHolder(View row) {
mRow = row;
}
public TextView gettitle() {
if(null == title){
title = (TextView) mRow.findViewById(R.id.title);
}
return title;
}
public TextView getDate() {
if(null == date){
date = (TextView) mRow.findViewById(R.id.date);
}
return date;
}
public ImageView getImage(int position) {
if(null == i11){
i11 = (ImageView) mRow.findViewById(R.id.img);
i11.setImageDrawable(newArtists.get(position).getNewsPic());
}
return i11;
}
}
}