Android 如何用教师工作的学校列表填充ListView

Android 如何用教师工作的学校列表填充ListView,android,android-listview,android-cardview,Android,Android Listview,Android Cardview,大家好,我有点怀疑。如何填充一个列表视图,其中我有一名教师在几所大学学校工作 例如: Jonh Braz老师在学校哈佛大学、耶鲁大学和华盛顿大学工作。 **老师比尔·汉斯在哈佛大学和耶鲁大学工作 我需要给老师工作的每所学校出示一张卡片 在我的例子中,我需要在应用程序3上显示约翰老师的卡片,因为约翰在3所学校工作,比尔老师在2所学校工作 跟着我的班主任 public class Teacher{ private int id; private String nome; priv

大家好,我有点怀疑。如何填充一个列表视图,其中我有一名教师在几所大学学校工作

例如:

Jonh Braz老师在学校哈佛大学、耶鲁大学和华盛顿大学工作。 **老师比尔·汉斯在哈佛大学和耶鲁大学工作

我需要给老师工作的每所学校出示一张卡片

在我的例子中,我需要在应用程序3上显示约翰老师的卡片,因为约翰在3所学校工作,比尔老师在2所学校工作

跟着我的班主任

public class Teacher{

   private int id;
   private String nome;
   private private List<School> schoolList;

    */ gets and sets here /*
}
现在我需要为教师工作的学校制作一个带有适配器的listView来显示1卡

我不知道怎么做

跟随我的类适配器

 public class TeacherAdapter extends RecyclerView.Adapter<TeacherAdapter.ViewHolder> {

    private List<Teacher> mTeacherList;

    public TeacherAdapter(List<Teacher> data) {
    mTeacherList = data;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView =             LayoutInflater.from(parent.getContext()).inflate(R.layout.teacher_item, parent,        false);
         return new ViewHolder(itemView);
     }

     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {
     Teacher teacher = mTeacherList.get(position);

     for (int i = 0; i < teacher.getSchoolList().size(); i++) {
         holder.textViewTeacherNome.setText(teacher.getNome());
             holder.textViewSchoolName.setText(teacher.getConsultorioList().get(i).getName())   ;
       }
   }

     @Override
     public int getItemCount() {
     return mTeacherList.size();
  }

  public class ViewHolder extends RecyclerView.ViewHolder {

      public TextView textViewTeeacherNome;
      public TextView textViewSchoolName;


      public ViewHolder(View itemView) {
        super(itemView);

        textViewTeacherNome = (TextView)      itemView.findViewById(R.id.text_view_name_teacher);
           textViewSchoolName = (TextView)      itemView.findViewById(R.id.text_view_name_school);
       }
   }
}


这个类不起作用,只显示老师的卡片,我需要按学校显示tacher工作的卡片。

ListView用于显示自定义对象的列表,每个对象代表一个对应的视图项。 在您的情况下,我建议您创建一个新类,该类包含教师和学校对象

public class TeacherSchoolWrapper {
    private Teacher mTeacher;
    private School mSchool;

    public TeacherSchoolWrapper(Teacher teacher, School school) {
        mTeacher = teacher;
        mSchool = school;
    }

    /* Getters and setters go here...*/
}
初始化数据时,请创建TeacherSchoolWrapper的ArrayList,然后填写教师和学校的数据

public ArrayList<TeacherSchoolWrapper> initialize(List<Teacher> teachers) {
    ArrayList<TeacherSchoolWrapper> wrappers = new ArrayList<>();
    for (Teacher teacher : teachers) {
        // Create wrappers which contain both teacher and school
        for (School school : teacher.getSchoolList()) {
            wrappers.add(new TeacherSchoolWrapper(teacher, school));
        }
    }
    return wrappers;
}
创建解释数据的适配器类

public class TeacherAdapter extends ArrayAdapter<TeacherSchoolWrapper> {
    public TeacherAdapter(ArrayList<TeacherSchoolWrapper> wrappers) {
        super(this, 0, wrappers);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = getLayoutInflater().inflate(android.R.layout.simple_list_item_2, null);
        }
        TeacherSchoolWrapper wrapper = getItem(position);
        TextView textView1 = (TextView) convertView.findViewById(android.R.id.text1);
        TextView textView2 = (TextView) convertView.findViewById(android.R.id.text2);
        textView1.setText(wrapper.getTeacher().getName());
        textView2.setText(wrapper.getSchool().getName());
        return convertView;
    }
}
希望这能帮助你

public class TeacherAdapter extends ArrayAdapter<TeacherSchoolWrapper> {
    public TeacherAdapter(ArrayList<TeacherSchoolWrapper> wrappers) {
        super(this, 0, wrappers);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = getLayoutInflater().inflate(android.R.layout.simple_list_item_2, null);
        }
        TeacherSchoolWrapper wrapper = getItem(position);
        TextView textView1 = (TextView) convertView.findViewById(android.R.id.text1);
        TextView textView2 = (TextView) convertView.findViewById(android.R.id.text2);
        textView1.setText(wrapper.getTeacher().getName());
        textView2.setText(wrapper.getSchool().getName());
        return convertView;
    }
}