http://blog.csdn.net/lhp1331/article/details/7909477
点击每个item右上角的小框框之后:
- 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,
- <?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 的布局
- <?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>