本实例包含一个主layout,含有一个Android GridView,还有一个用于填充GridView一行的layout,最后是重写一个GridView的适配器类。
由于是显示SD卡图片,没有图片id可用,所以需要重写BaseAdapter,而不是SimpleAdapter。
代码如下,很容易看懂。
1.main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llRoot"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical"
>
<GridView
android:horizontalspacing="5dip"
android:id="@+id/GridView01"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:stretchmode="columnWidth"
android:verticalspacing="5dip"
/>
</LinearLayout>
2.grid_row.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlGridRow"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
>
<ImageView
android:id="@+id/imageView01"
android:layout_alignparentleft="true"
android:layout_height="36.0dip"
android:layout_width="36.0dip"
android:scaletype="fitCenter"
/>
<TextView
android:id="@+id/txtLink1"
android:layout_height="wrap_content"
android:layout_torightof="@id/imageView01"
android:layout_width="wrap_content"
android:paddingleft="6.0dip"
android:textcolor="#FF00FF"
/>
<TextView
android:id="@+id/txtLink2"
android:layout_below="@id/txtLink1"
android:layout_height="wrap_content"
android:layout_margintop="-4.0dip"
android:layout_torightof="@id/imageView01"
android:layout_width="wrap_content"
android:paddingbottom="8.0dip"
android:paddingleft="6.0dip"
android:textcolor="#00FFFF"
android:textsize="12sp"
/>
</RelativeLayout>
3.java类
public class AndroidTest2_3_3 extends Activity {
private static final String TAG = "AndroidTest2_3_3";
private Bitmap bit;
private String textArray1[] = {"婺源", "丹霞山", "周庄"};
private String textArray2[] = {"油菜花盛开的地方", "红绿之间,雄壮与温柔", "梦中的水乡"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String imagepath = Environment.getExternalStorageDirectory() + "/abc.jpg";
bit = BitmapFactory.decodeFile(imagepath);
GridView gv=(GridView)this.findViewById(R.id.GridView01);
Log.d(TAG, "+++++++++++1");
ImageAdapter ia = new ImageAdapter(this);
gv.setAdapter(ia);//为GridView设置数据适配器
}
/**
* GridView适配器类,创建单元格view
* @author ameyume
*
*/
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context context) {
Log.d(TAG, "ImageAdapter 1");
mContext = context;
}
public int getCount() {
return textArray1.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Log.d(TAG, "000000000000000");
View view = View.inflate(AndroidTest2_3_3.this, R.layout.grid_row, null);
RelativeLayout rl = (RelativeLayout)view.findViewById(R.id.rlGridRow);
ImageView image = (ImageView)rl.findViewById(R.id.imageView01);
image.setImageBitmap(bit);
TextView tv1 = (TextView)rl.findViewById(R.id.txtLink1);
tv1.setText(textArray1[position]);
TextView tv2 = (TextView)rl.findViewById(R.id.txtLink2);
tv2.setText(textArray2[position]);
return rl;
}
}
}
运行效果如图: