【发布时间】: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