Android GridView的使用

來源:互聯網
上載者:User

Android的GridView控制項用於把一系列的空間組織成一個二維的網格顯示出來
應用的比較多的就是組合圖片顯示
下面我就詳細講一個例子

 

 

首先寫一個類繼承BaseAdapter

public class ImageList extends BaseAdapter {</p><p> public Bitmap[] image;<br />Activity activity;</p><p>// construct<br />public ImageList(Activity a) {<br />activity = a;<br />}<br />@Override<br />public int getCount() {<br />// TODO Auto-generated method stub<br />return image.length;<br />}<br />@Override<br />public Object getItem(int position) {<br />// TODO Auto-generated method stub<br />return image[position];<br />}<br />@Override<br />public long getItemId(int position) {<br />// TODO Auto-generated method stub<br />return position;<br />}<br />public View getView(int position, View convertView, ViewGroup parent) {<br />// TODO Auto-generated method stub<br />ImageView imageView;<br />if (convertView == null) {<br />imageView = new ImageView(activity);<br />imageView.setLayoutParams(new GridView.LayoutParams(50, 50));// 設定ImageView寬高<br />imageView.setAdjustViewBounds(false);<br />imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);</p><p>} else {<br />imageView = (ImageView) convertView;<br />}<br />imageView.setImageBitmap(image[position]);</p><p>return imageView;<br />}<br />public static Bitmap drawableToBitmap(Drawable drawable) { </p><p> Bitmap bitmap = Bitmap<br /> .createBitmap(<br /> drawable.getIntrinsicWidth(),<br /> drawable.getIntrinsicHeight(),<br /> drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888<br /> : Bitmap.Config.RGB_565);<br /> Canvas canvas = new Canvas(bitmap);<br /> drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());<br /> drawable.draw(canvas);<br /> return bitmap;<br />}<br />}<br /> 

 

 

然後在主程式裡

 

 

 

 

 

final GridView gv = (GridView) findViewById(R.id.grid);<br />ImageList adapter = new ImageList(available.this);<br />Resources res=getResources();<br />Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.logo);<br />adapter.image=new Bitmap[20];<br />for(int i=0;i<=19;i++)<br />{<br />adapter.image[i]=bmp;<br />}<br />gv.setAdapter(adapter);<br />gv.setOnItemClickListener(new OnItemClickListener() {<br />@Override<br />public void onItemClick(AdapterView<?> arg0, View arg1,<br />int arg2, long arg3) {<br />// TODO Auto-generated method stub<br />Log.i("phb", arg2 + "");<br />Log.i("phbsel",gv.isFocused()+"");<br />Intent i=new Intent(available.this, com.mobile.links.shop.mycx.shopcart.class);<br /> startActivity(i);<br />}<br />});<br /> gv.setOnItemSelectedListener(new OnItemSelectedListener(){<br />@Override<br />public void onItemSelected(AdapterView<?> arg0, View arg1,<br />int arg2, long arg3) {<br />// TODO Auto-generated method stub<br />Log.i("selected",arg2+"");<br />tv.setText(arg2+":detail");<br />}<br />@Override<br />public void onNothingSelected(AdapterView<?> arg0) {<br />// TODO Auto-generated method stub</p><p>}</p><p> });<br />

 

其中onClick函數是判斷被點擊

而onSelect函數是判斷被選中 也就是獲得焦點的imageview

 

 

這樣我們就可以基於gridview來做一些應用了。

 

構建gridview的xml代碼

 

<?xml version="1.0" encoding="utf-8"?><br /><LinearLayout<br />android:id="@+id/relativelayout"<br />android:layout_width="fill_parent"<br />android:layout_height="fill_parent"<br />xmlns:android="http://schemas.android.com/apk/res/android"<br />android:orientation="vertical"<br />><br /><GridView android:id="@+id/availgrid"<br /> android:layout_width="fill_parent"<br /> android:layout_height="wrap_content"<br /> android:numColumns="4"<br /> android:verticalSpacing="30dp"<br /> android:layout_centerHorizontal = "true"</p><p> /> </p><p></LinearLayout><br />

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.