您的位置:首页 > 移动开发 > Android开发

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: