一、GridView的使用
step1:同上一篇,首先创建一个LinearLayout的线性布局,里面写一个GridView
<!-- numColumns="3" 有几列 -->
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3" >
</GridView>
这里的numColumns是指列数
step2:同上一篇,设置适配器就可以
setContentView(R.layout.activity_main);
GridView gridView = (GridView) findViewById(R.id.gridView);
二、接下来说一下适配器的优化
在继承父类时重写的第四个方法中,把里面的创建的东西重复利用。。。
@Override
// 获取视图
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
// step11:设置视图(创建一个laylout的xml)【可以运行了!!!!!】
convertView = View.inflate(mContext, R.layout.item, null);
// 创建对象(里面是我们要得到里面的属性)
holder = new ViewHolder();
// step12:找控件
holder.tx = (ImageView) convertView.findViewById(R.id.touxiang);
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.gender = (TextView) convertView.findViewById(R.id.gender);
holder.age = (TextView) convertView.findViewById(R.id.age);
// 保存holder对象
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// step13:设置内容
// 首先得到我们想要的对象
User user = list.get(position);
// 给imageView设置图片 tx.setImageResource(R.drawable.图片名字)
holder.tx.setImageResource(user.getTx());
holder.name.setText(user.getName());
holder.gender.setText(user.getGender());
holder.age.setText("" + user.getAge());
return convertView;
}
class ViewHolder {
ImageView tx;
TextView name;
TextView gender;
TextView age;
}