带有图像和文本的ListView中的SaxParser数据

时间:2011-09-13 07:01:21

标签: android android-listview

我有一个XML文件:

<root>  
<DATA>  
<NAME>ABC</NAME>  
<IMAGE>http://a2.ak.lscdn.net/imgs/c18196f8-374b-47d2-ad9a-3f2dec64da76/100_q60_.jpg</IMAGE>  
</DATA>  
<DATA>  
<NAME>lmn</NAME>  
<IMAGE>http://w3devadv.liveproj.com/image.php?img=/deals/2011/0905/13152281143500.jpg</IMAGE>  
</DATA>  
</root>  

在这里我得到了名字的数据,我没有得到图像链接。

它显示错误java.net.MalformedURLException: Protocol not found:

我已修改了您<IMAGE>的第一个<IMAG'>标记,这是不正确的...

2 个答案:

答案 0 :(得分:1)

像这样创建xml

   <data name="abc" image="path" ..../>

然后去做

你必须在

画画
         public void startElement(String namespaceURI, String localName,
          String qName, Attributes atts) throws SAXException

方法然后存储它Vector Vectors = new Vector(); 并在获取字符串中的所有图像路径后,然后在可绘制的矢量中添加图像

      try {
                images.add(drawable_from_url(atts.getValue("image"), "src"));
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

在适配器中的setimage背景之后                 holder.img1.setBackgroundDrawable(images.get(位置));

    and drawable method is

        Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException 
{
    return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), src_name);
}

答案 1 :(得分:0)

是的,你必须显示代码,但你可以尝试这个(我在我的RSS应用中使用这个方法):

在你的列表适配器中:

View rowView = inflater.inflate(R.layout.imageText_layout, null);
JSONObject jsonImageText = getItem(position);
TextView textView = (TextView) rowView.findViewById(R.id.feed_text);
ImageView imageView = (ImageView) rowView.findViewById(R.id.feed_image);
try {

        if (jsonImageText.get("imageLink") != null){

            System.out.println("XXXX Link found!");
            String url = (String) jsonImageText.get("imageLink");
            URL feedImage= new URL(url);

            HttpURLConnection conn= (HttpURLConnection)feedImage.openConnection();
            InputStream is = conn.getInputStream();
            Bitmap img = BitmapFactory.decodeStream(is);
            imageView.setImageBitmap(img);
        }

        Spanned text = (Spanned)jsonImageText.get("text");
        textView.setText(text);

在新布局中创建行viev(imageText_layout):

<ImageView android:id="@+id/feed_image"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/>

<TextView android:id="@+id/feed_text" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:textColor="#ffcc00" />

在articleList中加载文章,将buildJsonObject加载到u:

current.put("text", Html.fromHtml(sb.toString()));
current.put("imageLink", imgLink);