【发布时间】:2025-12-01 11:50:01
【问题描述】:
我正在尝试制作一个列表片段来显示二十个项目。就目前而言,对于列表中的所有二十个项目,仅显示列表中的最后一个项目。我一直在查看 listfragments 的示例,但我不知道出了什么问题。
这是来自扩展 ListFragment 的 CourseFragment 类:
private List<Course> mCourses;
public CourseFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCourses = Schedule.get(getActivity()).getSchedule();
CourseArrayAdapter<Course> mAdapter = new CourseArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, mCourses);
setListAdapter(mAdapter);
for (int i = 0; i < 20; i++ ) {
Log.d("DEBUGTAG", "Course: " + mCourses.get(i));
}
}
这是来自 CourseArrayAdapter:
public CourseArrayAdapter(Context context, int resource, List<T> objects) {
super(context, resource, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.d("DEBUG", "getView " + position);
LayoutInflater inflater = LayoutInflater.from(getContext());
View mLayout;
if (convertView == null) {
mLayout = inflater.inflate(R.layout.view_course, parent, false);
} else {
mLayout = convertView;
}
T mCourse = getItem(position);
TextView mCourseTextView = (TextView) mLayout.findViewById(R.id.course_textview);
mCourseTextView.setText(mCourse.toString());
return mLayout;
}
还有MainActivity的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager mFragManager = getFragmentManager();
Fragment mFragment = mFragManager.findFragmentById(R.id.main_activity_framelayout);
if(mFragment == null) {
mFragment = new CourseFragment();
mFragManager.beginTransaction().add(R.id.main_activity_framelayout, mFragment).commit();
}
}
这里是Course类的实例变量和构造函数:
private static String sCourseName;
private static int sCourseNum;
private static String sInstructor;
private static String sDescription;
public Course(String mCourseName, int mCourseNum, String mInstructor, String mDescription) {
sCourseName = mCourseName;
sCourseNum = mCourseNum;
sInstructor = mInstructor;
sDescription = mDescription;
}
如果需要任何其他代码来解决此问题,请告诉我。非常感谢您的帮助!
【问题讨论】:
-
你能不能显示 courseArrayAdapter 的构造函数
-
mCourse.tostring 的值是否相同,您能告诉我打印的是什么
-
已更新以包含该内容
-
@Override public String toString() { return getCourseNum() + " " + getCourseName() + " " + "\nInstructor: " + getInstructor(); }
-
for 循环实际上并没有做任何事情,它只是为了调试。我将 setListAdapter 移到它之后,它并没有改变输出。
标签: android listview android-arrayadapter android-listfragment