您的位置:首页 > 其它

GridView实现一行显示并左右滚动

2011-08-24 10:00 267 查看
使用GridView达到Gallery效果

<?xml version="1.0" encoding="utf-8"?>
<!-- res/layout/gridview_to_gallery.xml -->
<HorizontalScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<GridView android:id="@+id/grid"
android:layout_width="1300dp"
android:layout_height="fill_parent"
android:gravity="center"
android:columnWidth="100dip"
android:horizontalSpacing="10dip"
android:verticalSpacing="10dip"/>
</LinearLayout>
</HorizontalScrollView>


public class GridViewDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview_to_gallery);

GridView gridview = (GridView) findViewById(R.id.grid);
ImageAdapter adapter = new ImageAdapter(this);//一个继承BaseAdapter的自定义适配器
adapter.setImages(getImages());
gridview.setAdapter(adapter);
gridview.setNumColumns(adapter.getCount());

gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View v, int position, long id) {
Toast.makeText(GridViewDemo.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
/**
* 取出SD卡中的图片(也可改为取网络或数据库图片)
* @return
*/
private List<Bitmap> getImages() {
List<Bitmap> list = new ArrayList<Bitmap>();
for (int i=1; i<=12; i++) {
String imagePath = "/sdcard/image_0"+i+".jpg";
if (i >= 10) imagePath = "/sdcard/image_"+i+".jpg";
list.add(BitmapFactory.decodeFile(imagePath));
}
return list;
}
}


自定义适配器

public class ImageAdapter extends BaseAdapter {
private Context mContext;
private List<Bitmap> images = new ArrayList<Bitmap>();

public ImageAdapter(Context c) {
mContext = c;
}

public List<Bitmap> getImages() {
return images;
}
public void setImages(List<Bitmap> images) {
this.images = images;
}

public int getCount() {
return images.size();
}

public Object getItem(int position) {
return images.get(position);
}

public long getItemId(int position) {
return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {  // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}

imageView.setImageBitmap(images.get(position));
return imageView;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: