【问题标题】:ListView in ViewPager that don't refresh the first time (Android)第一次不刷新的 ViewPager 中的 ListView (Android)
【发布时间】:2015-09-02 00:59:20
【问题描述】:

我有一个带有 2 个片段的 ViewPager。

其中一个带有显示数据库中元素的 ListView,以及每个元素的 CheckBox。 如果您选中 CheckBox,则在我的数据库中更改一个变量,然后我调用 notifyDataSetChanged(),因此我的片段被刷新。 (数据库工作正常,notifyDataSetChanget() 也是)。

另一个片段有一个ListView,它显示了已经用按钮选中的数据库元素,当你选中复选框时具有相同的功能并且也可以正常工作。

嗯,每个片段都有自己的适配器。

我想将 CheckBox 推入其中一个,然后自动更改另一个片段中的 ListView。这就是问题所在!

我怎样才能做到这一点?

我尝试在每个片段中使用这两个适配器,但是,第一次显示 ViewPager 时不起作用,之前的时间是...但是,这是一个糟糕的应用程序。

谢谢!

代码:

viewPager 的片段 1

公共类 FragmentEdadAntigua1Tab1 扩展 SherlockFragment {

ListView list;
AdapterListViewFragment adapter;
AdapterListViewFragmentFav adapter2;
DataBase bd;

ArrayList<RellenoListView> rellenoList;

public FragmentEdadAntigua1Tab1(AdapterListViewFragment adapter,AdapterListViewFragmentFav adapter2){
    this.adapter=adapter;
    this.adapter2=adapter2;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Get the view from fragmenttab1.xml
    View view = inflater.inflate(R.layout.fragment_tab_1, container, false);

    //Background
    ImageView img = (ImageView) view.findViewById(R.id.imgview_tab_1);
    img.setImageResource(R.drawable.ic_background_ea1); 

    getAll();
    adapter.setRellenoListView(rellenoList); 


    // Locate the ListView in fragmenttab1.xml
    list = (ListView) view.findViewById(R.id.listview_tab_1);

    // Pass results to ListViewAdapter Class
    //adapter = new AdapterListViewFragment(getActivity(),R.layout.listview_item_2,rellenoList,1);
    // Binds the Adapter to the ListView
    list.setAdapter(adapter);

    //To allow to refresh the other fragment
    adapter.setAdapterAux(adapter2);  

    return view;
}


public void getAll(){
    RellenoListView rellenoAux;


    rellenoList = new ArrayList<RellenoListView>();


    bd = new DataBase(getActivity());
    bd.open();


    Cursor cursor=bd.getTodos(1);
    if(cursor.moveToFirst()){
        do{
            rellenoAux = new RellenoListView();

            rellenoAux.setImg(cursor.getInt(1)); /
            rellenoAux.setTitulo(cursor.getString(2));
            rellenoAux.setTiempo(cursor.getString(3));

            String fav = cursor.getString(4);
            String list = cursor.getString(5);

            if(fav.equals("0")){ /
                rellenoAux.setSelectedFav(false);
            }else{
                rellenoAux.setSelectedFav(true);                
            }
            if(list.equals("0")){ 
                rellenoAux.setSelectedList(false);
            }else{
                rellenoAux.setSelectedList(true);                   
            }

            rellenoAux.setUrl(cursor.getString(6));

            rellenoList.add(rellenoAux);
        }while(cursor.moveToNext());

    }

    bd.close();    
}

}

viewPager 的片段 2

公共类 FragmentEdadAntigua1Tab2 扩展 SherlockFragment{

ArrayList<RellenoListView> favList;
DataBase bd;
ListView list;
AdapterListViewFragmentFav adapter;
AdapterListViewFragment adapter2;

public FragmentEdadAntigua1Tab2(AdapterListViewFragmentFav adapter, AdapterListViewFragment adapter2){
    this.adapter=adapter;
    this.adapter2=adapter2;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View view;      

    favList = new ArrayList<RellenoListView>();

    //Get only the favourites
    getFav();


    if(favList.isEmpty()){
        view = inflater.inflate(R.layout.fragment_tab_2_sin, container, false);


        ImageView img = (ImageView) view.findViewById(R.id.imgview_tab_2);
        img.setImageResource(R.drawable.ic_background_ea1); 

    }else{ 
        view = inflater.inflate(R.layout.fragment_tab_2_con, container, false);


        ImageView img = (ImageView) view.findViewById(R.id.imgview_tab_2);
        img.setImageResource(R.drawable.ic_background_ea1); 

        // Locate the ListView in fragmenttab1.xml
        list = (ListView) view.findViewById(R.id.listview_tab_2);

        // Pass results to ListViewAdapter Class
        //adapter = new AdapterListViewFragmentFav(getActivity(),R.layout.listview_item_2,favList,1); 

        adapter.setRellenoListView(favList);  

        // Binds the Adapter to the ListView
        list.setAdapter(adapter);

        //To allow to refresh the other fragment
        adapter.setAdapterAux(adapter2);


    }

    return view;
}



public void getFav(){
    RellenoListView rellenoAux;

    bd = new DataBase(getActivity());                       
    bd.open();



    Cursor cursor=bd.getTodos(1);   

    if(cursor.moveToFirst()){
        do{
               String fav = cursor.getString(4);    

               if(fav.equals("1")){ 
                    rellenoAux = new RellenoListView(); 

                    rellenoAux.setImg(cursor.getInt(1)); 
                    rellenoAux.setTitulo(cursor.getString(2));
                    rellenoAux.setTiempo(cursor.getString(3));

                    rellenoAux.setSelectedFav(true);  

                    String list = cursor.getString(5);
                    if(list.equals("0")){ 
                        rellenoAux.setSelectedList(false);
                    }else{
                        rellenoAux.setSelectedList(true);                   
                    }

                    rellenoAux.setUrl(cursor.getString(6));


                    favList.add(rellenoAux);
                }

            }while(cursor.moveToNext());

     }


     bd.close();    

}

}

【问题讨论】:

    标签: android listview android-viewpager refresh


    【解决方案1】:

    我认为不查看您的代码就无法提供准确的解决方案。但是您可以做的一件事是创建一个线程,该线程在某个时间间隔(可能是 5 秒)内运行无限循环并刷新 listView。

    代码可能如下所示:

    new Thread(new Runnable(){
        public void run(){
            while(true){
                try{
                    Thread.sleep(5000);
                }
                catch (InterruptedException e){
                    return;
                }
                usersList.setAdapter(listAdapter);
            }
        }
    }).start();
    

    【讨论】:

    • 好的,现在我也展示一下代码。我认为问题在于:adapter.setAdapterAux(adapter2);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    相关资源
    最近更新 更多