写出来的效果如下:
- 布局文件:
<GridView
android:id="@+id/gv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:scrollbars="none" />
android:scrollbars="none" : 不显示滚动条
android:numColumns="3" : 显示有三列
- 写adapter类(代码如下):
public class GridViewAdapter extends BaseAdapter {
private Context context;
private List<Map<String, Object>> list;
public GridViewAdapter(Context context, List<Map<String, Object>> list) {
this.context = context;
this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_gridview, null, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
try {
/**
* =========从list中取出数据并设置在控件中
*/
Map<String, Object> map = list.get(position);
String name = (String) map.get("name");
int img = (int) map.get("img");
viewHolder.gvItemImg.setImageResource(img);
viewHolder.gvItemTv.setText(name);
} catch (Exception e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}
return convertView;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
static class ViewHolder {
@BindView(R.id.gv_item_img)
ImageView gvItemImg;
@BindView(R.id.gv_item_tv)
TextView gvItemTv;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
- 在Activity中的代码如下:
public class MainActivity extends AppCompatActivity {
@BindView(R.id.gv)
GridView gv;
private List<Map<String, Object>> list;
private GridViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//拿到数据
getAndCombinData();
adapter = new GridViewAdapter(this, list);
gv.setAdapter(adapter);
}
@OnItemClick(R.id.gv)
public void onItemClick(int poaition) {
Toast.makeText(this, names[poaition], Toast.LENGTH_SHORT).show();
}
/**
* ============拿到并组合数据组合数据
*/
private void getAndCombinData() {
list = new ArrayList<>();
Map<String, Object> map = null;
for (int i = 0; i < names.length; i++) {
map = new HashMap<>();
map.put("name", names[i]);
map.put("img", imgs[i]);
list.add(map);
}
}
private int[] imgs = new int[]{
R.drawable.home,
R.drawable.work,
R.drawable.data,
R.drawable.msg,
R.drawable.ddgl,
R.drawable.me,
R.drawable.sjtj,
R.drawable.xxcx,
R.drawable.qx,
R.drawable.qxgl,
R.drawable.home,
R.drawable.work,
R.drawable.data,
R.drawable.msg,
R.drawable.ddgl,
R.drawable.me,
R.drawable.sjtj,
R.drawable.xxcx,
R.drawable.qx,
R.drawable.qxgl
};
private String[] names = new String[]{
"主页", "任务", "数据", "消息", "设置", "我的", "数据统计", "信息管理", "权限", "权限管理",
"主页", "任务", "数据", "消息", "设置", "我的", "数据统计", "信息管理", "权限", "权限管理"
};
}