上一篇我们说到了自定义的泛型适配器,那么如何调用呢?
首先,我们要写一个适配器,继承自定义的泛型适配器
<strong><span style="font-size:18px;">public class ObjectAdapter extends MyAdapter<Object>{
public ObjectAdapter(List<Object> items) {
super(items);
}
</span></strong>
<strong><span style="font-size:18px;"> </span></strong>
<strong><span style="font-size:18px;"> @Override//设置布局
public View getItemView(int position, View convertView, ViewGroup parent) {
int i=getItemViewType(position);
if(i==1){//学生布局
return View.inflate(parent.getContext(), R.layout.studenu,null);
}else if(i==2){//老师布局
return View.inflate(parent.getContext(), R.layout.teacher,null);
}
return null;
}
@Override
public ViewHolaer onCreateViewHolaer(int position, View convertView) {
int i=getItemViewType(position);
ViewHolaer holaer=null;
if(i==1){//学生布局
holaer= new MyStudentHolaer(convertView);
}else if(i==2){//老师布局
holaer= new MyTeacherHolaer(convertView);
}
return holaer;
}
@Override
public void onBindViewHolaer(int position, ViewHolaer holaer) {
int i=getItemViewType(position);
Object object=getItem(position);
if(i==1){//设置控件显示的内容
Student student= (Student) object;
MyStudentHolaer holaer1= (MyStudentHolaer) holaer;
holaer1.student_name.setText(student.name);
holaer1.student_age.setText(student.age+"");
holaer1.student_time.setText(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis()));
}else if(i==2){
Teacher teacher= (Teacher) object;
MyTeacherHolaer holaer1= (MyTeacherHolaer) holaer;
holaer1.teacher_name.setText(teacher.name);
holaer1.teacher_age.setText(teacher.age+"");
}
}
public class MyStudentHolaer extends ViewHolaer{
public TextView student_name,student_age,student_time;
public MyStudentHolaer(View view) {
super(view);
student_name= (TextView) view.findViewById(R.id.student_name);
student_age= (TextView) view.findViewById(R.id.student_age);
student_time= (TextView) view.findViewById(R.id.student_time);
}
}
public class MyTeacherHolaer extends ViewHolaer{
public TextView teacher_name,teacher_age;
public MyTeacherHolaer(View view) {
super(view);
teacher_name= (TextView) view.findViewById(R.id.teache_name);
teacher_age= (TextView) view.findViewById(R.id.teache_age);
}
}</span></strong>
<strong><span style="font-size:18px;">
</span></strong>
在Activity中实现多布局效果的代码:
public class ListViewActivity extends AppCompatActivity {
private ListView listView;
private List<Teacher>teachers=new ArrayList<>();
private List<Student>students=new ArrayList<>();
private List<Object>objects=new ArrayList<>();
private final int Count=20;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
initView();
}
private void initView() {
listView= (ListView) findViewById(R.id.listview);
initData();//初始化数据源
listView.setAdapter(new ObjectAdapter(objects));
}
private void initData() {
for(int i=0;i< Count;i++){
if(i%2==0){
objects.add(new Teacher("杨钰莹"+(i+1)+"号",(i+1)));
}else{
objects.add(new Student("莫妮卡"+(i+1)+"号",(i+1)));
}
}
}
}