2

データベースから画像の 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;
    }

}
}
4

1 に答える 1