を設定した後、私はviewPagerがあり、各viewPagerに私はListViewコントロールを持って実行されません。\私は私のアプリを実行するとValueEventListener
が実行されていないためValueEventListenerは、アダプタ
、IndexOutOfBoundsException
がCourseListAdapterにスローされます...
しかし、私はlistView.setAdapter(mAdapter);
私のリストビューが読み込まれることはありませんが、私は私のロガーでD/CourseListAdapter: Getting information
を参照してください削除。.. ListViewの設定
マイ・フラグメント:
を10マイリストビューアダプタ:Firebaseからのデータを同期
public class CourseListAdapter
extends BaseAdapter {
private static final String TAG = "CourseListAdapter";
private Context mContext;
private List<Day> mDays = new ArrayList<>();
private int mDay = 0;
private ValueEventListener mListener;
private FirebaseDatabase mDatabase;
private DatabaseReference mReference;
public CourseListAdapter(final Activity context, int day) {
mContext = context;
mDay = day;
// Setup Firebase
mDatabase = FirebaseDatabase.getInstance();
mReference = mDatabase.getReference();
mListener = mReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "Getting information");
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Day day = postSnapshot.getValue(Day.class);
for (DataSnapshot course : postSnapshot.child("courses").getChildren()) {
day.addCourse(course.getValue(Course.class));
}
mDays.add(day);
}
// Tell some data changed
notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "Listen was cancelled, no more updates will occur");
}
});
}
public void removeListener() {
mReference.removeEventListener(mListener);
}
@Override
public int getCount() {
Day day = mDays.get(mDay);
return day.getCourses().size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Day day = mDays.get(mDay);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.course_items, parent, false);
viewHolder.course = (TextView) convertView.findViewById(R.id.course);
viewHolder.classRoom = (TextView) convertView.findViewById(R.id.class_room);
viewHolder.begin = (TextView) convertView.findViewById(R.id.begin);
viewHolder.end = (TextView) convertView.findViewById(R.id.end);
viewHolder.teacher = (TextView) convertView.findViewById(R.id.teacher);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.course.setText(day.getCourses().get(position).name);
viewHolder.classRoom.setText(day.getCourses().get(position).classRoom);
viewHolder.begin.setText(day.getCourses().get(position).from);
viewHolder.end.setText(day.getCourses().get(position).to);
viewHolder.teacher.setText(day.getCourses().get(position).teacher);
return convertView;
}
private class ViewHolder {
TextView course;
TextView classRoom;
TextView begin;
TextView end;
TextView teacher;
}
}
私のデータベースは公開されています。 '' '' listView.setAdapter(mAdapter); ''部分が削除された場合... – yooouuri
エラーログを公開できますか?つまり、IndexOutOfBoundsExceptionが発生した場所ですか? –
http://pastebin.com/raw/VjpZgCdh例外は '' Day Day = mDays.get(mDay); '' '' 'getCount'''メソッドで呼び出されます。 "ValueEventListener"は配列と呼ばれることはないので、空です! – yooouuri