本次的Demo是通過GridView展示一個List,通過2個按鈕實現GridView從視覺上的增加和減少。
為了方便增加和減少,本次用的儲存結構是List。與String在BaseAdapter一樣,只需要更改BaseAdapter的2個基本函數分別是
getItem(),getCount()
public Object getItem(int position) {
return mad[position];
}
public int getCount() {
return mad.length;
}
?
?這是String的 BaseAdapter
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mList.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mList.size();
}
?
?這是List的BaseAdapter
?
?
?
下邊放上整個代碼
package com.example.onclickgridview;
import java.security.acl.LastOwnerException;
import java.util.ArrayList;
import java.util.List;
import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
// 作用:
// 1、對于一個沒有被載入或者想要動態載入的界面, 都需要使用inflate來載入.
//
// 2、對于一個已經載入的Activity, 就可以使用實現了這個Activiyt的的findViewById方法來獲得其中的界面元素.
private LayoutInflater mInflater;
//創建初始化數據源
private String[] mad = {"1","2","3","4","5","6","7","8","9"};
private List<String> mList;
//聲明控件
private GridView mGridView;
//聲明adpter
private Adapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//關聯
Button btnAdd = (Button) findViewById(R.id.button1);
Button btnDel = (Button) findViewById(R.id.button2);
mGridView = (GridView) findViewById(R.id.gridView1);
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mList = new ArrayList<String>();
for(int i = 0; i<mad.length; i++){
mList.add(mad[i]);
}
//新建BaseAdapter
mAdapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text;
ImageView imgview;
RelativeLayout rLayout;
//初始化時加載頁面用到的 if里的東西
if (convertView == null) {
rLayout = (RelativeLayout) mInflater.inflate(R.layout.new_file, parent, false);
} else {
rLayout = (RelativeLayout) convertView;
}
String item = (String) getItem(position);
//設置控件取回的數據
text = (TextView) rLayout.findViewById(R.id.TextView2);
text.setText(item);
imgview = (ImageView) rLayout.findViewById(R.id.ImageView1);
imgview.setImageResource(R.drawable.ic_launcher);
return rLayout;
}
//本次重點 準確返回數據位置的關鍵 必須在getItemID設置對的位置選項默認從0開始
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mList.get(position);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mList.size();
}
};
mGridView.setAdapter((ListAdapter) mAdapter);
//監聽事件 對于按下gridView控件的其中一個做出的響應
mGridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
Toast.makeText(MainActivity.this, "你選擇了" + (position + 1) + " 號圖片", Toast.LENGTH_SHORT).show();
}
});
//監聽2個按鈕
btnAdd.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
//通過對list的長度在選擇累計增加的數值
int j= mList.size();
//這里用到了類型轉換
String s = Integer.toString(j+1);
mList.add(s);
mGridView.setAdapter((ListAdapter) mAdapter);
}
});
btnDel.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
//通過對list的長度在選擇累計減少的數值
int z= mList.size();
//這里用到了類型轉換
String t = Integer.toString(z);
mList.remove(t);
mGridView.setAdapter((ListAdapter) mAdapter);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
?展示效果
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

