Android的GridView控件(一)
2013-10-11 18:00
381 查看
http://blog.csdn.net/lhp1331/article/details/7909477
点击每个item右上角的小框框之后:
[java] view
plaincopy
public class OrderClient2 extends Activity{
TabHost tabHost;
String[] dishType=new String[]{"tab1","tab2","tab3","tab4","tab5","tab6","tab7"};
GridView gridView;
String[] dishName=new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","1"};
//这个路径是手机的sdcard,不是外接的sdcard
String picPath=Environment.getExternalStorageDirectory().getPath() + "/picture/";
GridViewAdapter gridViewAdapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取TabHost对象
TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
// 如果没有继承TabActivity时,通过该种方法加载启动tabHost
tabHost.setup();
gridView=(GridView)findViewById(R.id.view1);
gridViewAdapter=new GridViewAdapter(this);
gridView.setAdapter(gridViewAdapter);
gridView.setOnItemClickListener(new GridViewAdapterListener());
for(int i=0;i<dishType.length;i++){
TabHost.TabSpec tabSpec=tabHost.newTabSpec(dishType[i]);
tabSpec.setIndicator(dishType[i],getResources().getDrawable(R.drawable.ic_launcher));
tabSpec.setContent(R.id.view1);
tabHost.addTab(tabSpec);
}
tabHost.setCurrentTab(1);
tabHost.setCurrentTab(0);
new AsyncLoadImage().execute(100);
}
class GridViewAdapterListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Log.i("选择的图片", arg2+"");
//GridViewItem item=(GridViewItem) gridView.getItemAtPosition(arg2);
Toast.makeText(getApplicationContext(), "click item", 500).show();
//item.ifSelect.setBackgroundResource(R.drawable.selected);
}
}
class AsyncLoadImage extends AsyncTask<Object, Bitmap, Object>{
@Override
protected Object doInBackground(Object... params) {
Bitmap bitmap;
Log.i("加载线程", "");
// TODO Auto-generated method stub
for(int i=0;i<dishName.length;i++){
Log.i("图片路径", picPath + dishName[i] + ".jpg");
bitmap=BitmapFactory.decodeFile(picPath + dishName[i] + ".jpg");
if(bitmap != null){
bitmap=Bitmap.createScaledBitmap(bitmap, 500, 350, true);
publishProgress(bitmap);
Log.i("图片解析", "正确");
}
else
Log.i("图片解析", "错误");
}
return null;
}
@Override
protected void onProgressUpdate(Bitmap... values) {
// TODO Auto-generated method stub
for(Bitmap b : values){
gridViewAdapter.addPic(b);
gridViewAdapter.notifyDataSetChanged();
}
}
}
class GridViewAdapter extends BaseAdapter{
Context context;
private LayoutInflater inflater;
private ArrayList<Bitmap> picList=new ArrayList<Bitmap>();
GridViewAdapter(Context context){
this.context=context;
inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return picList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return picList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void addPic(Bitmap bitmap){
picList.add(bitmap);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("得到view", position + "");
GridViewItem gridViewItem;
if(convertView == null){
convertView=inflater.inflate(R.layout.gridviewitem, null);
gridViewItem=new GridViewItem();
gridViewItem.dishPic=(ImageView)convertView.findViewById(R.id.dishPic);
gridViewItem.ifSelect=(Button)convertView.findViewById(R.id.ifSelect);
gridViewItem.dishName=(TextView)convertView.findViewById(R.id.dishName);
convertView.setTag(gridViewItem);
}
else{
gridViewItem=(GridViewItem)convertView.getTag();
}
gridViewItem.dishPic.setImageBitmap(picList.get(position));
gridViewItem.dishName.setText(dishName[position]);
gridViewItem.ifSelect.setTag(false);
gridViewItem.ifSelect.setOnClickListener(new SelectListener());
return convertView;
}
}
class SelectListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
if((Boolean) v.getTag()){
((Button)v).setBackgroundResource(R.drawable.unselected);
((Button)v).setTag(false);
}
else{
((Button)v).setBackgroundResource(R.drawable.selected);
((Button)v).setTag(true);
}
//Toast.makeText(getApplicationContext(), "click me", 500).show();
//gridViewAdapter.notifyDataSetChanged();
}
}
class GridViewItem{
public ImageView dishPic;
public Button ifSelect;
public TextView dishName;
}
}
两个布局文件:
main.xml,
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hometabs"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- TabHost必须包含一个 TabWidget和一个FrameLayout-->
<TabHost android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<!-- TabWidget的id属性必须为 @android:id/tabs-->
<TabWidget android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TabWidget>
</HorizontalScrollView>
<!-- FrameLayout的id属性必须为 @android:id/tabcontent-->
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<GridView
android:id="@+id/view1"
android:listSelector="#000000"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0dip"
android:layout_margin="0dip"
android:numColumns="2"
android:horizontalSpacing="3dip"
android:verticalSpacing="3dip"
android:stretchMode="columnWidth"
android:gravity="fill"/>"
</FrameLayout>
</LinearLayout>
</TabHost>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hha"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hha2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hha3"/>
</LinearLayout>
</LinearLayout>
gridViewItem,xml:单个item 的布局
[html] view
plaincopy
<?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="wrap_content">
<ImageView
android:id="@+id/dishPic"
android:adjustViewBounds="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"/>
<Button
android:id="@+id/ifSelect"
android:background="@drawable/unselected"
android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/dishPic"
android:layout_alignRight="@id/dishPic"/>
<TextView
android:id="@+id/dishName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/dishPic"
android:layout_alignLeft="@id/dishPic"
android:layout_alignRight="@id/dishPic"
android:background="#555555"/>
</RelativeLayout>
点击每个item右上角的小框框之后:
[java] view
plaincopy
public class OrderClient2 extends Activity{
TabHost tabHost;
String[] dishType=new String[]{"tab1","tab2","tab3","tab4","tab5","tab6","tab7"};
GridView gridView;
String[] dishName=new String[]{"1","2","3","4","5","6","7","8","9","10","11","12","1"};
//这个路径是手机的sdcard,不是外接的sdcard
String picPath=Environment.getExternalStorageDirectory().getPath() + "/picture/";
GridViewAdapter gridViewAdapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取TabHost对象
TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
// 如果没有继承TabActivity时,通过该种方法加载启动tabHost
tabHost.setup();
gridView=(GridView)findViewById(R.id.view1);
gridViewAdapter=new GridViewAdapter(this);
gridView.setAdapter(gridViewAdapter);
gridView.setOnItemClickListener(new GridViewAdapterListener());
for(int i=0;i<dishType.length;i++){
TabHost.TabSpec tabSpec=tabHost.newTabSpec(dishType[i]);
tabSpec.setIndicator(dishType[i],getResources().getDrawable(R.drawable.ic_launcher));
tabSpec.setContent(R.id.view1);
tabHost.addTab(tabSpec);
}
tabHost.setCurrentTab(1);
tabHost.setCurrentTab(0);
new AsyncLoadImage().execute(100);
}
class GridViewAdapterListener implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Log.i("选择的图片", arg2+"");
//GridViewItem item=(GridViewItem) gridView.getItemAtPosition(arg2);
Toast.makeText(getApplicationContext(), "click item", 500).show();
//item.ifSelect.setBackgroundResource(R.drawable.selected);
}
}
class AsyncLoadImage extends AsyncTask<Object, Bitmap, Object>{
@Override
protected Object doInBackground(Object... params) {
Bitmap bitmap;
Log.i("加载线程", "");
// TODO Auto-generated method stub
for(int i=0;i<dishName.length;i++){
Log.i("图片路径", picPath + dishName[i] + ".jpg");
bitmap=BitmapFactory.decodeFile(picPath + dishName[i] + ".jpg");
if(bitmap != null){
bitmap=Bitmap.createScaledBitmap(bitmap, 500, 350, true);
publishProgress(bitmap);
Log.i("图片解析", "正确");
}
else
Log.i("图片解析", "错误");
}
return null;
}
@Override
protected void onProgressUpdate(Bitmap... values) {
// TODO Auto-generated method stub
for(Bitmap b : values){
gridViewAdapter.addPic(b);
gridViewAdapter.notifyDataSetChanged();
}
}
}
class GridViewAdapter extends BaseAdapter{
Context context;
private LayoutInflater inflater;
private ArrayList<Bitmap> picList=new ArrayList<Bitmap>();
GridViewAdapter(Context context){
this.context=context;
inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return picList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return picList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void addPic(Bitmap bitmap){
picList.add(bitmap);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("得到view", position + "");
GridViewItem gridViewItem;
if(convertView == null){
convertView=inflater.inflate(R.layout.gridviewitem, null);
gridViewItem=new GridViewItem();
gridViewItem.dishPic=(ImageView)convertView.findViewById(R.id.dishPic);
gridViewItem.ifSelect=(Button)convertView.findViewById(R.id.ifSelect);
gridViewItem.dishName=(TextView)convertView.findViewById(R.id.dishName);
convertView.setTag(gridViewItem);
}
else{
gridViewItem=(GridViewItem)convertView.getTag();
}
gridViewItem.dishPic.setImageBitmap(picList.get(position));
gridViewItem.dishName.setText(dishName[position]);
gridViewItem.ifSelect.setTag(false);
gridViewItem.ifSelect.setOnClickListener(new SelectListener());
return convertView;
}
}
class SelectListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
if((Boolean) v.getTag()){
((Button)v).setBackgroundResource(R.drawable.unselected);
((Button)v).setTag(false);
}
else{
((Button)v).setBackgroundResource(R.drawable.selected);
((Button)v).setTag(true);
}
//Toast.makeText(getApplicationContext(), "click me", 500).show();
//gridViewAdapter.notifyDataSetChanged();
}
}
class GridViewItem{
public ImageView dishPic;
public Button ifSelect;
public TextView dishName;
}
}
两个布局文件:
main.xml,
[html] view
plaincopy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hometabs"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- TabHost必须包含一个 TabWidget和一个FrameLayout-->
<TabHost android:id="@+id/tabhost"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<!-- TabWidget的id属性必须为 @android:id/tabs-->
<TabWidget android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TabWidget>
</HorizontalScrollView>
<!-- FrameLayout的id属性必须为 @android:id/tabcontent-->
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<GridView
android:id="@+id/view1"
android:listSelector="#000000"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0dip"
android:layout_margin="0dip"
android:numColumns="2"
android:horizontalSpacing="3dip"
android:verticalSpacing="3dip"
android:stretchMode="columnWidth"
android:gravity="fill"/>"
</FrameLayout>
</LinearLayout>
</TabHost>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hha"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hha2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hha3"/>
</LinearLayout>
</LinearLayout>
gridViewItem,xml:单个item 的布局
[html] view
plaincopy
<?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="wrap_content">
<ImageView
android:id="@+id/dishPic"
android:adjustViewBounds="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"/>
<Button
android:id="@+id/ifSelect"
android:background="@drawable/unselected"
android:focusable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/dishPic"
android:layout_alignRight="@id/dishPic"/>
<TextView
android:id="@+id/dishName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/dishPic"
android:layout_alignLeft="@id/dishPic"
android:layout_alignRight="@id/dishPic"
android:background="#555555"/>
</RelativeLayout>
相关文章推荐
- android 常用控件 (GridView)
- Android的GridView控件点击图片变暗效果
- Android控件开发之GridView
- Android控件之GridView探究
- Android常用控件之GridView的使用
- Android控件之GridView
- 系出名门Android(8) - 控件(View)之TextSwitcher, Gallery, ImageSwitcher, GridView, ListView, ExpandableList
- Android UI控件应用分享:如何实现“带分割线并且Item为正方形”的GridView
- Android中ListView或者GridView的Item和Item中控件的事件冲突
- android 关于线程更新UI控件,包括gridview,textview,imageview等
- Android中的GridView网格视图控件
- Android:控件GridView的使用
- Android控件 之 GridView九宫格实现方法二
- Android 控件之GridView
- android控件)GridView控件开发总结
- 解决Android当中GridView的Item子控件中有ImageView图片大小不一致问题,动态设置ImageView控件大小
- Android 去掉ListView/GridView等列表控件滑到顶部或底部时的模糊边缘效果
- Android:控件GridView的使用
- Android UI系统控件进阶(四)—网格视图控件GridView
- Android 网络视图控件 GridView的实现