android - viewPager 适配器未更新
问题描述
我正在尝试从 CollegeHTMLParse.class 更新适配器(MyCollegePagerAdapter)。然而,即使我创建了一个对象并在其上调用了 notifyDataSetChanged() 方法,注意到显示在片段上。你能告诉我我的代码是否有任何问题,因为我已经在谷歌上搜索了数周的解决方案,并且在尝试了数小时后,我无法找出问题所在。
这是 CollegeHTMLParse 类:
public class CollegeHTMLParse extends AppCompatActivity {
public static ArrayList<String> colleges = new ArrayList<>();
public static ArrayList<String> accepted = new ArrayList<>();
public static ArrayList<String> link = new ArrayList<>();
public static ArrayList<String> location = new ArrayList<>();
public static ArrayList<String> tuition = new ArrayList<>();
FirebaseDatabase mRef;
DatabaseReference database;
public static ArrayList<String> data = new ArrayList<>();
MyCollegePagerAdapter adapter = new MyCollegePagerAdapter(getSupportFragmentManager());
public void onCreate(String CollegeCode) {
colleges.clear();
accepted.clear();
link.clear();
location.clear();
tuition.clear();
mRef = FirebaseDatabase.getInstance("https://successway18.firebaseio.com/");
database = mRef.getReference().child("CollegeCodes").child("30");
database.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
setCollegeValues(dataSnapshot.getKey());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void setCollegeValues(String values) {
colleges.add(values);
int i = 0;
while (i < colleges.size()) {
database.child(colleges.get(i)).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
setDetailsValues(dataSnapshot.getValue().toString());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
i++;
}
}
private void setDetailsValues(String details) {
data.add(details);
if (data.size() == 4) {
accepted.add(data.get(0));
link.add(data.get(1));
location.add(data.get(2));
tuition.add(data.get(3));
data.clear();
}
update();
}
private void update() {
adapter.notifyDataSetChanged();
}
}
非常感谢您!
解决方案
将此添加到您的寻呼机适配器中
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
推荐阅读
- javascript - 如何将 possibleNumber 数组中的每个项目两次推送到 JavaScript 中的 unplacedArray
- sql - 使用名称中的当前日期创建模式
- javascript - 要求子组件为特定类型
- android - OpenCSV 与常规 FileOutputStream 性能
- pyspark - 通过 spark-submit 打包和部署 pyspark 应用程序到集群时出错
- sql - Oracle SQL - 添加 CASE 语句后“不是按表达式分组”
- ios - iOS 应用程序在大约一天(或两天)后自动暂停
- reactjs - 使用 create-react-app 后,我安装的任何软件包都会破坏我的代码吗?
- angular - 使用 NGX-Bootstrap 路由到特定选项卡
- sed - 在模式上方添加回车两行