Android GridView樣本(一)

來源:互聯網
上載者:User
1 main.xml檔案如下<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/linearLayout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView      android:id="@+id/TextView"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/tip"    android:textColor="@color/white"    android:textSize="24dip"    >    </TextView>    <GridView     android:id="@+id/GridView"     android:layout_width="fill_parent"     android:layout_height="fill_parent"    android:verticalSpacing="5dip"    android:horizontalSpacing="5dip"    android:stretchMode="columnWidth"    >   </GridView></LinearLayout>說明:總體是一個垂直方向的線性布局,一個TextView,然後緊接是一個GridView,這和ListView很類似2 grid_row.xml如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"     android:id="@+id/linerLayout_grid_row"    >    <ImageView    android:id="@+id/ImageView_grid_row"    android:scaleType="fitXY"   android:layout_width="100dip"   android:layout_height="98dip"></ImageView><TextView     android:id="@+id/TextView_grid_row"     android:layout_width="140dip"     android:layout_height="wrap_content"    android:textColor="@color/white"        android:textSize="24dip"        android:paddingLeft="5dip">    </TextView></LinearLayout>說明:整體是一個水平方向的線性布局,先是一個ImageView,在其右邊是一個TextView 3 Activity如下package cn.com.baidu;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.GridView;import android.widget.LinearLayout;import android.widget.SimpleAdapter;import android.widget.TextView;//注意://1 GridView和ListView的資料的綁定非常相似.在hashMap.put("col1", drawableIDs[i]);處我們往此hashMap裡//  放入的是圖片的ID(即在R檔案中產生的圖片ID),而不是真正的圖片資料.在綁定時系統會根據此ID自動載入對應的圖片//2 方法 new SimpleAdapter(this, createDataList(), R.layout.grid_row, new String []{"col1","col2"}, new int []{R.id.ImageView_grid_row,R.id.TextView_grid_row});//  gridView.setAdapter(simpleAdapter);此方法的參數和使用ListView時的適配器參數基本上一樣的//  第一個參數:內容物件//  第二個參數:要被繫結資料(List)//  第三個參數:接收此繫結資料的布局//  第四個參數:被綁定資料的鍵//  第五個參數:把這些鍵分別綁到布局的哪個控制項中//  第二和三個參數是從宏觀來描述的,第四和五個參數是從微觀的角度進一步描述的//3 此例中分別監聽獲得焦點和被點擊的處理情況.這點很有借鑒意義public class TestGridViewActivity extends Activity {private GridView gridView;private ArrayList<Map<String,Object>> arrayList;private TextView textView;    int drawableIDs []={R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e};    int jjs []={R.string.jja,R.string.jjb,R.string.jjc,R.string.jjd,R.string.jje};        public List createDataList(){arrayList=new ArrayList<Map<String,Object>>();for(int i=0;i<jjs.length;i++){HashMap<String, Object> hashMap=new HashMap<String, Object>();hashMap.put("col1", drawableIDs[i]);//第一列為照片hashMap.put("col2", this.getString(jjs[i]));//第二列為名字arrayList.add(hashMap);}return arrayList;}    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        gridView=(GridView) findViewById(R.id.GridView);        SimpleAdapter simpleAdapter=        new SimpleAdapter(this, createDataList(), R.layout.grid_row, new String []{"col1","col2"}, new int []{R.id.ImageView_grid_row,R.id.TextView_grid_row});        gridView.setAdapter(simpleAdapter);//為GridView設定適配器        gridView.setOnItemSelectedListener(new OnItemSelectedListener() {//當條目獲得焦點時的處理@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                textView=(TextView) findViewById(R.id.TextView);LinearLayout linearLayout=(LinearLayout) view;//獲得焦點的條目.每個條目都是一個LinearLayoutTextView childTextView=(TextView) linearLayout.getChildAt(1);//.獲得此條目中的TextView顯示的名字.從0開始,所以為1textView.setText(childTextView.getText().toString());//然後在另外一個(即主TextView)中顯示}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});                gridView.setOnItemClickListener(new OnItemClickListener() {//當條目獲被點擊時的處理.同上.@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {textView=(TextView) findViewById(R.id.TextView);LinearLayout linearLayout=(LinearLayout) view;TextView childTextView=(TextView) linearLayout.getChildAt(1);//???textView.setText(childTextView.getText().toString());}});    } }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.