首页 > 解决方案 > 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();    
    }
}

非常感谢您!

标签: androidfirebasefirebase-realtime-databaseandroid-viewpagerandroid-adapter

解决方案


将此添加到您的寻呼机适配器中

  @Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}

推荐阅读