我正在尝试将图像显示到Android模拟器3.1中,但我遇到了问题。 我只能在ListView中显示URL。 我正在使用我的本地服务器,我将url存储到mysql数据库并传递php,但现在问题出现在android中。
1)我需要将图片网址转换为图片并将其显示到ListView中,包括文字,这里是我的代码:
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
JSONObject json = JSONfunctions.getJSONfromURL("http://10.0.2.2/php/ViewPro.php");
try{
JSONArray earthquakes = json.getJSONArray("prop");
for(int i=0;i<earthquakes.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = earthquakes.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put("imageColumn","Property : " + e.getString("imageColumn"));
map.put("P_Price","Property Cost : " + e.getString("P_Price"));
mylist.add(map);
}
}catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.list_item, new String[] {"imageColumn","P_Price"}, new int[] { R.id.item_title, R.id.item_subtitle });
setListAdapter(adapter);
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@SuppressWarnings("unchecked")
HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);
Toast.makeText(ViewStock.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show();
}
});
请帮帮我:)。
答案 0 :(得分:0)
如果我已经理解了您的问题,您想要显示从URL和某些文本中检索到的图像列表。
我不指定如何在代码中绘制图像。在适配器中尝试覆盖getView方法。有些类似于这个
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
...
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.yourlinelayout, null);
ImageView img = (ImageView) v.findViewById(R.id.my_img);
UrlImageViewHelper.setUrlDrawable(img, url_image_link, R.drawable.default, 60000);
return v;
}
UrlImageViewHelper - &gt;这是一个很酷的图书馆,我在评论的末尾发布了链接
我以前做的是在4个子问题中分解这个问题,如果你这样做,你将永远不会遇到适配器和列表视图的问题
活动
您需要一个扩展ListActivity的活动
你需要定义一个带有ListView的Layout xml,它会将listview id设置为@android:id / list
绘制每一行
您需要使用每行的布局(在您的案例中为图像和文本)定义xml布局
让我们定义一个类,它将保存每一行的信息,它将被调用,例如InfoRow(带有2个字符串,一个是URL,另一个是文本)
您需要定义InfoRow的ArrayAdapter(例如AdapterMyInfo),它将为行布局xml充气并绘制每一行
结合两件事
您只需要指定ListActivity的适配器是ArrayAdapter
info = new ArrayList<InfoRow >();
m_adapter = new AdapterMyInfo(
this.getApplicationContext(),
info );
setListAdapter(m_adapter);
从网址中提取图片 Tha Last Problem ...尝试这个,它是惊人的,缓存和AsyncLoad。真的很棒,很专业
答案 1 :(得分:0)
这就是我想要的:
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
Bitmap bitmap = null;
bitmap = BitmapFactory.decodeStream((InputStream)new URL(i).getContent());