我只想从RSS-Feed显示一些图像数据。我的RSS源代码工作正常,从Feed中正确加载,但我无法以水平方式显示图像?我尝试使用Gallery但无法将图像放入其中?有没有办法实现同样的目标?
我还引用链接http://www.dev-smart.com/archives/34来实现Horizontal ListView,但是我无法将onClickListener实现到列表中。请帮忙。谢谢。
我为图库试过的代码..
public class 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 :(得分: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;
}
答案 1 :(得分:0)
请看下面的代码,这将为您提供全面的帮助。工作正常
@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