如何在Android中设置文本和图像(图像URL)到Gridview
如何在Android中将Text和图像(图像URL)设置为Gridview并且ImageSize应该固定为所有图像 注意:我正在收集这些数据(IMage URL和从Web服务文本)如何在Android中设置文本和图像(图像URL)到Gridview
你必须做出例如自己的布局,
<RelativeLayout
android:id="@+id/relGrid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" >
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:numColumns="3"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:listSelector="@null" />
</RelativeLayout>
作一次布局,每个项目在网格
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="120dp"
android:background="@drawable/background">
<ImageView
android:layout_width="wrap_content"
android:id="@+id/imgGrid"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content"/>
<TextView
android:layout_below="@+id/imgGrid"
android:layout_centerInParent="true"
android:id="@+id/txtTitle"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:text=""
android:textStyle="bold"
android:textSize="15dp"
android:textColor="@color/blue"/>
</RelativeLayout>
然后使用网格查看这个样子,
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(MainActivity.this,R.layout.grid_layout , imgArray, titleArray));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
if(position == 0)
{
//your code
}
}
});
ImageAdapter.java
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class ImageAdapter extends ArrayAdapter<Object>
{
String TAG = "ImageAdapter";
private int resource;
private Integer[] mImgGrid;
private String[] mTitleText;
public ImageAdapter(Context context, int resorce, Integer[] imgGrid,String[] titleText)
{
super(context, resorce, imgGrid);
Log.i(TAG," in set adapter lstRecipes "+ imgGrid.length);
this.resource = resorce;
this.mImgGrid = imgGrid;
this.mTitleText = titleText;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;
if (convertView == null)
{
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
convertView = layoutInflater.inflate(resource, parent, false);
holder = new ViewHolder();
holder.txtTitle = (TextView)convertView.findViewById(R.id.txtTitle);
holder.imgGrid = (ImageView)convertView.findViewById(R.id.imgGrid);
convertView.setTag(holder);
}
else
{
holder=(ViewHolder)convertView.getTag();
}
try
{
holder.txtTitle.setText(mTitleText[position]);
holder.imgGrid.setImageResource(mImgGrid[position]);
}
catch (Exception e)
{
e.printStackTrace();
}
return convertView;
}
public static class ViewHolder
{
private TextView txtTitle;
private ImageView imgGrid;
}
}
如果您是使用图像,并直接从Web服务文本,然后它不是什么大不了的,你可以从web服务解析你的数据,你可以设置,在这个ImageView和TextView。
@ Mansi:谢谢亚尔。我只使用Webservice。我解析了数据..让我试着说,你ü – 2012-02-15 10:43:07
你喜欢这个想法/代码吗? – anddev 2012-02-15 10:48:09
@ Mansi:如何将解析的数据声明为textview和Imageview.As它是一个静态类,我无法声明它.. AnyComplete源代码是非常赞赏(仅适用于webservice,如果有的话) – 2012-02-15 11:08:02
1)为gridview创建一个xml布局。
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/GridView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="80dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:background="@color/white"
>
</GridView>
2)创建一个多个布局home_screen_text.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="201px"
android:layout_y="165px"
android:gravity="center_horizontal"
>
<ImageView
android:id="@+id/icon_image"
android:layout_width="wrap_content"
android:layout_height="80dp"
>
</ImageView>
<TextView
android:id="@+id/icon_text"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@color/black"
android:textStyle="bold"
android:lines="2">
</TextView>
</LinearLayout>
3)然后使用GridView。 GridView GridView =(GridView)findViewById(R.id.GridView01); gridview.setAdapter(new ImageAdapter(this)); gridview.setOnItemClickListener(新OnItemClickListener(){ 公共无效onItemClick(适配器视图父母,视图V, INT位置,长的id){} }
4)创建一个继承baseadapter一个imageadapter类。
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public static final int ACTIVITY_CREATE = 10;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds1.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
View v;
if (convertView == null) {
imageView = new ImageView(mContext);
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.home_screen_text, null);
TextView tv = (TextView) v.findViewById(R.id.icon_text);
tv.setText("" + iconText.get(position).toString());
ImageView iv = (ImageView) v.findViewById(R.id.icon_image);
iv.setImageResource(mThumbIds1.get(position));
} else {
v = convertView;
imageView = new ImageView(mContext);
LayoutInflater li = getLayoutInflater();
v = li.inflate(R.layout.home_screen_text, null);
TextView tv = (TextView) v.findViewById(R.id.icon_text);
tv.setText("" + iconText.get(position).toString());
ImageView iv = (ImageView) v.findViewById(R.id.icon_image);
iv.setImageDrawble(drawable_from_url("url of the image", "name"));
}
return v;
}
}
返回可绘制的方法。 可绘制drawable_from_url(String url,String src_name)抛出java.net.MalformedURLException,java.io.IOException { return Drawable.createFromStream(((java.io.InputStream))new java.net.URL(url).awagetContent( )),src_name); }
@ Rakshi:感谢您的帮助,但我使用webservice我的朋友 – 2012-02-15 11:16:00
你有什么代码吗? – himanshu 2012-02-15 10:36:57
是的..我有解析数据在我的手里,它构成Id,图像的URL和名称..如何把它放到一个gridview ..输出willbe的图像和文本(应该在图像下方) – 2012-02-15 12:18:57