package com.example.bbbb;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
public class MyBaseAdapter extends BaseAdapter {
private LayoutInflater mInflater;
final int VIEW_TYPE = 3; // 总的item样式数
final int TYPE_0 = 0; // 第一个item布局
final int TYPE_1 = 1; // 第二个item布局
final int TYPE_2 = 2; // 第二个item布局
private String[] list = { "aa", "bb", "cc", "cc", "cc", "cc", "cc", "cc",
"cc", "cc", "cc", "cc", "cc", "cc", "cc", "cc", "cc", "cc", "cc",
"cc", "cc", "cc", "cc", "cc", "cc", "cc", "cc" };
public MyBaseAdapter(MainActivity mainActivity) {
mInflater = LayoutInflater.from(mainActivity);
}
@Override
public int getCount() {
return list.length;
}
@Override
public Object getItem(int position) {
return list[position];
}
@Override
public long getItemId(int position) {
return position;
}
//根据不同的位置,使用不同的布局
@Override
public int getItemViewType(int position) {
if(position == 8){
return TYPE_0;
}
if (position == 0) {
return TYPE_0;
} else if (position == 1) {
return TYPE_1;
} else {
return TYPE_2;
}
}
@Override
public int getViewTypeCount() { // item样式类型总数
return VIEW_TYPE;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
HolderView holder;
int type = getItemViewType(position); // 获取所有样式类型总数
if (convertView == null) {
holder = new HolderView();
switch (type) {
case TYPE_0:
convertView = mInflater.inflate(R.layout.button, null);
break;
case TYPE_1:
convertView = mInflater.inflate(R.layout.my_main, null);
break;
case TYPE_2:
convertView = mInflater.inflate(R.layout.textview, null);
break;
}
convertView.setTag(holder);
} else {
holder = (HolderView) convertView.getTag();
}
//根据不同的布局获取不同的控件,设置不同的值
switch (type) {
case TYPE_0:
holder.button = (Button) convertView.findViewById(R.id.button1);
holder.button.setText(list[position]);
break;
case TYPE_1:
holder.checkBox1 = (CheckBox) convertView.findViewById(R.id.checkBox1);
holder.checkBox1.setText(list[position]);
break;
case TYPE_2:
holder.textView1 = (TextView) convertView.findViewById(R.id.textView1);
holder.textView1.setText(list[position]);
break;
}
return convertView;
}
public class HolderView {
private Button button;
private CheckBox checkBox1;
private TextView textView1;
}
}
ListView item layout change
最新推荐文章于 2021-05-26 14:33:11 发布