Android程式:GridView的應用(仿桌面圖示排列並設定點選事件)
阿新 • • 發佈:2019-02-10
實現效果:
MainActivity :
public class MainActivity extends Activity implements OnItemClickListener {
private GridView gridView;
private List<Map<String, Object>> dataList;
private int[] icon = { R.drawable.address_book, R.drawable.calendar,
R.drawable.camera, R.drawable.clock, R.drawable.games_control,
R.drawable.messenger, R.drawable.ringtone, R.drawable.settings,
R.drawable.speech_balloon, R.drawable.weather, R.drawable.world,
R.drawable.youtube };
private String[] iconName = { "通訊錄", "日曆", "相機", "時鐘", "遊戲", "簡訊", "鈴聲",
"設定", "語音", "天氣", "瀏覽器", "視訊" };
private SimpleAdapter simpleAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView = (GridView) findViewById(R.id.gridView);
// 1.準備資料來源
dataList = new ArrayList<Map<String, Object>>();
// 2.新建介面卡(SimpleAdapter)
// SimpleAdapter(context, data, resource, from, to)
// SimpleAdapter(上下文(this), 資料來源, 佈局檔案, 自己取的名字要與後面的一一對應, 對應佈局中的id)
simpleAdapter = new SimpleAdapter(this, getData(), R.layout.item,
new String[] { "image", "text" }, new int[] { R.id.imageView,
R.id.textView });
// 3.GridView載入介面卡
gridView.setAdapter(simpleAdapter);
// 4.GridView配置事件監聽器(OnItemClickListener)
gridView.setOnItemClickListener(this);
}
private List<Map<String, Object>> getData() {
//填充資料來源
for(int i =0;i<icon.length;i++){
Map<String, Object>map=new HashMap<String, Object>();
map.put("image", icon[i]);
map.put("text", iconName[i]);
dataList.add(map);
}
return dataList;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//String s=gridView.getItemAtPosition(position)+"";
Toast.makeText(this, "我是"+iconName[position],Toast.LENGTH_SHORT).show();
}
}
main.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="vertical" >
<!--
android:numColumns="3" 每行顯示幾列
android:horizontalSpacing="" 兩列之間的間距
android:verticalSpacing="" 兩行之間的間距
-->
<GridView
android:layout_marginTop="50dp"
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="10dp"
android:numColumns="3"
android:verticalSpacing="10dp" >
</GridView>
</LinearLayout>
item.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="vertical"
android:gravity="center"
android:background="#000000" >
<ImageView
android:id="@+id/imageView"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/address_book"/>
<TextView
android:layout_marginTop="5dp"
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="hellp"/>
</LinearLayout>