显示和解析从DB到listview的图像

时间:2013-08-23 10:01:51

标签: android mysql android-listview uri adapter

我必须在我的Android应用程序的列表视图中显示来自mysql数据库的数据。我已成功解析文本数据并将其显示在自定义列表视图中,但图像未被解析并显示在列表中。我曾尝试使用imageloader,文件缓存,内存缓存,但仍然没有成功。

如果有人对丢失的内容或应添加的内容有任何了解,我们将不胜感激。

public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    TextView tourname;
    TextView duration;
    ImageView flag;

    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View itemView = inflater.inflate(R.layout.list_row1, parent, false);
 // Get the position from the results


 // Locate the TextViews in listview_item.xml
    tourname = (TextView) itemView.findViewById(R.id.themeTourList_title); 
    duration = (TextView) itemView.findViewById(R.id.themeTourList_price);  
    // Locate the ImageView in listview_item.xml
    flag = (ImageView) itemView.findViewById(R.id.themeTourList_image); 

    // Capture position and set results to the TextViews
    try
    {
        tourname.setText(mJSONArray.getJSONObject(position).getString("tour_name"));
        duration.setText(""+mJSONArray.getJSONObject(position).getString("nights")+" Nights - "+mJSONArray.getJSONObject(position).getString("days")+" Days");
        try{
        URL url = new URL("www.futurolicht.com/"+mJSONArray.getJSONObject(position).getString("pic"));
        Bitmap bitmap = BitmapFactory.decodeStream((InputStream)(url).getContent());
        flag.setImageBitmap(bitmap);
        }

3 个答案:

答案 0 :(得分:0)

尝试使用以下方法下载图片:

URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);

答案 1 :(得分:0)

我会写一个自定义的CursorAdapter

public class WhosNextAdapter extends CursorAdapter
{
    public WhosNextAdapter(Context context, Cursor cursor, boolean autoRequery) {
        super(context, cursor, autoRequery);
    }
@Override
public void bindView(View view, Context context, Cursor cursor) {
    //This is were you would check your cursor for style (I think that is 1,2,3 your column)
    int style = cursor.getInt(cursor.getColumnIndex("style"));

    ImageView img = (ImageView) view.findViewById(R.id.yourImageViewId);

    switch (style) {
        case 1:
            img.setImageResource(R.drawable.yourImageForStyle1);

        break;
        case 2:
            img.setImageResource(R.drawable.yourImageForStyle2);

        break;

//etc.
        }
    }

    @Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    //Inflate layout R.layout.artist_list_item

    //Call bindView passing inflated layout, context, and cursor

    //return layout
}
}

答案 2 :(得分:0)

如果我没有误解你的问题,这个链接肯定会帮助你:

http://www.androidhub4you.com/2012/09/hello-friends-today-i-am-going-to-share.html