2012-02-15 16 views
0

AndroidのGridviewにテキストと画像(画像URL)を設定し、ImageSizeをすべての画像に固定する方法 注:これらのデータ(IMage URLとあなたはたとえば独自のレイアウトを作成する必要があり、WebサービスAndroidでGridviewにテキストと画像(画像URL)を設定する方法

+0

あなたは何かをコードしていますか? – himanshu

+0

ええ..私はID、画像のURLと名前を構成する私の手にデータを解析している。グリッドビューに置く方法。画像とテキストの出力willbe(画像の下にあるべきである) –

答えて

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> 

を項目ごとに1つの以上のレイアウトを作りますこのようなビュー、

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

@マンシ:感謝yar私はWebサービスのみを使用しています。私はデータを解析しました。私はあなたに試してみてください。 –

+0

アイデア/コードが好きですか? – anddev

+0

@ Mansi:解析されたデータをtextviewとImageviewに宣言する方法。静的なクラスなので宣言することはできません.AnyCompleteソースコードは非常に高く評価されています(webserviceの場合のみ?) –

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)次に、GridViewコントロールを使用)もう一つのレイアウト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)findViewById(R.id.GridView01); gridview.setAdapter(新しいImageAdapter(this)); gridview.setOnItemClickListener(新しいOnItemClickListener(){ 公共ボイドonItemClick(AdapterView親、ビュー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を返すメソッド。 描画可能なdrawable_from_url(String url、String src_name)throw java.net.MalformedURLException、java.io.IOException { 戻り値Drawable.createFromStream(((java.io.InputStream))新しいjava.net.URL(URL).awagetContent ))、src_name); }

+0

@ Rakshi:助けてくれてありがとう、webserviceを使用しています私の友人 –

関連する問題