来自JSON的ListView中的坏位图的resolveUri失败

时间:2013-04-17 11:44:53

标签: android android-layout android-listview

我的问题是将图像显示到从JSON中获取的列表视图中,我阅读了很多关于该问题的帖子,但没有人完全解决它。我将网址String imagen = e.getString("img_preview_1");加入,然后将其添加到

HashMap<String, String> map = new HashMap<String, String>();
map.put("imagen", imagen);

这是我的适配器,带有String和图像

ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.activity_videos_categoria, 
                        new String[] { "title", "imagen" }, 
                        new int[] { R.id.from , R.id.imageView1});

        setListAdapter(adapter);

我尝试在地图asn对象中修改类型,但仍然是同样的问题

LogCat中的错误是在坏位图

上的resolveUri失败

谢谢

1 个答案:

答案 0 :(得分:4)

此处的问题是您将url(字符串类型)直接设置为imageview并请求SimpleAdapter将其绑定到imageview。我建议你使用我的下面代码中的其他适配器。由于SimpleAdapter中包含数据以使内容直接反映在SimpleCursorAdapter上,因此主要使用local(sqlite) databaselistview。但是在这里你从服务器获取数据。所以你在这里继续。

public class CustomListAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public CustomListAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

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

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
           vi = inflater.inflate(R.layout.list_row, null); //This should be your row layout

        TextView titleTextView = (TextView)vi.findViewById(R.id.title); // title
        ImageView thumb_image=(ImageView)vi.findViewById(R.id.imageview1); //image

        HashMap<String, String> localhash = new HashMap<String, String>();
        localhash = data.get(position);

        String currenttitle = localhash.get("title");
        String imagepath = localhash.get("imagen");

        titleTextView.setText(currenttitle);

        if(!imagepath.equals(""))
        {
        imageLoader.DisplayImage(imagepath , thumb_image);

        }
        return vi;
    }

}

您可以通过以下方式将上述适配器设置为listview。从网络加载数据后,请包含以下代码。要从服务器加载数据,请确保不在UI线程上运行网络操作。为此,您可以使用AsyncTask,Handlers,Service等。如果您使用AsyncTask,请在onPostExecute()中包含以下行。

CustomListAdapter adapter = new CustomListAdapter(YourActivity.this, dataArrayList);
listView.setAdapter(adapter); 

希望这会有所帮助,并且对于延迟回答表示抱歉。