2012-02-02 82 views
0

我想显示来自RSS-Feed的一些图像数据。我的RSS源代码工作正常,图像也从源正确加载,但我无法以水平方式显示图像?我试图与画廊,但无法将图像放入?有什么办法可以达到同样的效果吗?水平显示项目?

我也参考链接http://www.dev-smart.com/archives/34来实现水平ListView,但在那我无法实现onClickListener的列表。请任何帮助。谢谢。

我尝试了画廊的代码..

公共类ImageAdapter延伸BaseAdapter {

int imageBackground; 
private List<RSSIteam> objects = null; 
private Context context; 

public ImageAdapter(Context c) 
{ 
    context = c; 
    TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1); 
    imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1); 
    ta.recycle(); 
} 

public ImageAdapter(Context context, int textViewResourceId, List<RSSIteam> objects) 
{ 
    super(); 
    this.context = context; 
    this.objects = objects; 
} 

    @Override 
    public int getCount() 
    { 
     return this.objects.size(); 
     //return pics.length; 

    } 

    @Override 
    public Object getItem(int position) 
    { 
     return this.objects.get(position); 
     //return position; 
    } 

    @Override 
    public long getItemId(int position) 
    { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     RSSIteam data = (RSSIteam) getItem(position); 
     String imageUrl = data.imageurl; 
     try 
    { 
      URL feedImage = new URL(imageUrl); 
      HttpURLConnection conn= (HttpURLConnection)feedImage.openConnection(); 
      InputStream is = conn.getInputStream(); 
      Bitmap img = BitmapFactory.decodeStream(is); 



     } 
    catch (MalformedURLException e) 
    { 
      e.printStackTrace(); 
     } 
    catch (IOException e) 
    { 
      e.printStackTrace(); 
     } 



     ImageView iv = new ImageView(context); 
     iv.setImageResource(img[position]); //here i am unable to set the image in particular position because it require int type array 
     iv.setScaleType(ImageView.ScaleType.FIT_XY); 
     iv.setLayoutParams(new Gallery.LayoutParams(90,70)); 
    iv.setBackgroundResource(imageBackground); 
    return iv; 

    } 

}

+0

“我试着用图片库,但不能把图像成.. ???” - 发布你的代码。 – user370305 2012-02-02 09:43:05

回答

0

可以使用galleryholder.xml。这个xml包含了imageview,它由适配器膨胀并且返回视图和适配器在库中填充了这个视图。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="100dp" 
    android:layout_height="fill_parent" 
    android:background="@drawable/my_border" 
    android:orientation="vertical" 
    android:padding="5dp" > 


      <ImageView 
       android:id="@+id/storyImage" 
       android:layout_width="fill_parent" 
       android:layout_height="70dp" 
       android:scaleType="fitXY" /> 

</LinearLayout> 

and use Image adapter to fill the gallery 

galleryID.setAdapter(new ImageAdapter()); 

Image Adapter code 


    @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
    LayoutInflater layoutInflater=(LayoutInflater) 
        context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View view=(View)layoutInflater.inflate(R.layout.galleryholder,parent,false); 
     ImageView iv; 
      if(convertView==null){ 

       convertView=view; 
       iv=(ImageView)view.findViewById(R.id.storyImage); 

      } 
      RSSIteam data = (RSSIteam) getItem(position); 
      String imageUrl = data.imageurl; 
      try 
     { 
       URL feedImage = new URL(imageUrl); 
       HttpURLConnection conn= (HttpURLConnection)feedImage.openConnection(); 
       InputStream is = conn.getInputStream(); 
       Bitmap img = BitmapFactory.decodeStream(is); 



      } 
     catch (MalformedURLException e) 
     { 
       e.printStackTrace(); 
      } 
     catch (IOException e) 
     { 
       e.printStackTrace(); 
      } 



      iv.setImageResource(img[position]); //here i am unable to set the image in particular position because it require int type array 
      iv.setScaleType(ImageView.ScaleType.FIT_XY); 
      iv.setLayoutParams(new Gallery.LayoutParams(90,70)); 
     iv.setBackgroundResource(imageBackground); 
     return convertView; 

     } 
0

看这下面的代码将在帮助完整的you.it做工精细

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     /* 
     * // here i am setting the text color and bckgroung of layout // 
     * According to time if (6 <= (new Date()).getHours() && (new 
     * Date()).getHours() <= 17) { ll.setBackgroundColor(Color.BLACK); 
     * label.setTextColor(Color.WHITE); } else { 
     * ll.setBackgroundColor(Color.WHITE); 
     * label.setTextColor(Color.BLACK); } 
     */ 
     // return (row); 

     View v = convertView; 
     if (v == null) { 

      LayoutInflater inflater = context.getLayoutInflater(); 
      v = inflater.inflate(R.layout.myrow, null); 
     } 
     Item o = itemsCmn.get(position); 
     if (o != null) { 
      TextView tt = (TextView) v.findViewById(R.id.label); 
      ImageView icon = (ImageView) v.findViewById(R.id.icon); 
      if (tt != null) { 
       tt.setText(o.getTitle()); 
      } 
      else{ 

      } 
      if (icon != null) { 
       if (o.getImg() != null) { 
        icon.setImageBitmap(BitmapFactory.decodeByteArray(
          o.getImg(), 0, o.getImg().length)); 
       }else{ 
        icon.setImageResource(R.drawable.images); 
       } 
      } 
     } 
     return v; 
    }// getView