将图像URL转换为图像Android

时间:2012-06-20 12:17:04

标签: php android mysql

我正在尝试将图像显示到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(); 
      }
});

请帮帮我:)。

2 个答案:

答案 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。真的很棒,很专业

https://github.com/koush/UrlImageViewHelper

答案 1 :(得分:0)

这就是我想要的:

ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);      
Bitmap bitmap = null;

bitmap = BitmapFactory.decodeStream((InputStream)new URL(i).getContent());