0

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

请帮我 :)

4

2 回答 2

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 -> 这是一个很酷的库,我在评论末尾发布了链接

我习惯做的是把这个问题分成 4 个子问题,如果你这样做一次,你永远不会遇到适配器和列表视图的问题

活动

您需要一个扩展 ListActivity 的 Activity

您需要在其中定义一个带有 ListView 的 Layout xml,它将 listview id 设置为 @android:id/list

绘制每一行

您需要使用每行的布局定义一个 xml 布局(在您的情况下为图像和文本)

让我们定义一个类来保存每一行的信息,例如 InfoRow (有 2 个字符串,一个是 URL,另一个是文本)

您需要定义 InfoRow 的 ArrayAdapter(例如 AdapterMyInfo),它会膨胀行布局 xml 并绘制每一行

结合这两件事

你只需要指定ListActivity的Adapter就是你ArrayAdapter

info = new ArrayList<InfoRow >();

m_adapter = new AdapterMyInfo(
                    this.getApplicationContext(),
                    info );

setListAdapter(m_adapter);

从 URL 中绘制图像 最后一个问题...试试这个,太棒了,缓存和 AsyncLoad。真的很流畅和专业

https://github.com/koush/UrlImageViewHelper

于 2012-06-20T12:44:41.503 回答
0

这就是我一直在寻找的:

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

bitmap = BitmapFactory.decodeStream((InputStream)new URL(i).getContent());
于 2012-07-01T12:14:07.707 回答