我的问题是将图像显示到从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失败谢谢
答案 0 :(得分:4)
此处的问题是您将url
(字符串类型)直接设置为imageview
并请求SimpleAdapter
将其绑定到imageview
。我建议你使用我的下面代码中的其他适配器。由于SimpleAdapter
中包含数据以使内容直接反映在SimpleCursorAdapter
上,因此主要使用local(sqlite) database
和listview
。但是在这里你从服务器获取数据。所以你在这里继续。
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);
希望这会有所帮助,并且对于延迟回答表示抱歉。