2012-02-15 74 views
0

如何在Android中將Text和圖像(圖像URL)設置爲Gridview並且ImageSize應該固定爲所有圖像 注意:我正在收集這些數據(IMage URL和從Web服務文本)如何在Android中設置文本和圖像(圖像URL)到Gridview

+0

你有什麼代碼嗎? – himanshu 2012-02-15 10:36:57

+0

是的..我有解析數據在我的手裏,它構成Id,圖像的URL和名稱..如何把它放到一個gridview ..輸出willbe的圖像和文本(應該在圖像下方) – 2012-02-15 12:18:57

回答

3

你必須做出例如自己的佈局,

<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。

+0

@ Mansi:謝謝亞爾。我只使用Webservice。我解析了數據..讓我試着說,你ü – 2012-02-15 10:43:07

+0

你喜歡這個想法/代碼嗎? – anddev 2012-02-15 10:48:09

+0

@ Mansi:如何將解析的數據聲明爲textview和Imageview.As它是一個靜態類,我無法聲明它.. AnyComplete源代碼是非常讚賞(僅適用於webservice,如果有的話) – 2012-02-15 11:08:02

0

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); }

+0

@ Rakshi:感謝您的幫助,但我使用webservice我的朋友 – 2012-02-15 11:16:00

相關問題