Android 使用listfragment更新FragmentPageAdapter

Android 使用listfragment更新FragmentPageAdapter,android,listview,checkbox,android-fragments,Android,Listview,Checkbox,Android Fragments,我想更新/刷新FragmentPageAdapter的页面。 在每个页面中,我都有一个带有复选框的自定义ListView,当我选中一个复选框时,我希望刷新页面并将此选择传递到其他页面 一个页面显示选中复选框的列表,另一个页面显示未选中的复选框 我用BBDD数据填充的arrayAdapter 4.我一直在找,但找不到一个明确的解决办法。。对不起 代码是: 使用FragmentPageAdapter初始化: class GoogleMusicAdapter extends FragmentPager

我想更新/刷新FragmentPageAdapter的页面。 在每个页面中,我都有一个带有复选框的自定义ListView,当我选中一个复选框时,我希望刷新页面并将此选择传递到其他页面

一个页面显示选中复选框的列表,另一个页面显示未选中的复选框

我用BBDD数据填充的arrayAdapter

4.我一直在找,但找不到一个明确的解决办法。。对不起

代码是:

使用FragmentPageAdapter初始化:

class GoogleMusicAdapter extends FragmentPagerAdapter {

    public GoogleMusicAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        postab = position;
        return FragmentListaPendiente.init(position);

    }

    @Override
    public CharSequence getPageTitle(int position) {
        return CONTENT[position % CONTENT.length].toUpperCase();
    }

    @Override
    public int getCount() {
      return CONTENT.length;
    }

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

}
public class MyListaCompra extends SherlockFragment  {

View gv;
int postab = 0;
private static String[] CONTENT;

public static Intent newInstance(Activity activity,int pos) {
    Intent intent = new Intent(activity, MyListaCompra.class);
    return intent;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    CONTENT = getResources().getStringArray(R.array.tabCompra);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu, menu);
    Log.i("Truiton FragmentList", "ON CREATE O!");
    super.onCreateOptionsMenu(menu, inflater);

}



@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Fragment newContent = null;
    SwipeMenuListFragment f = new SwipeMenuListFragment();
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.action_new:
        //newContent = new añadirCompra();
        Intent t = new Intent(getActivity(),DetallesListaCompra.class);
        getActivity().startActivityForResult(t, 0);
        break;

    default:
        break;
    }

    return super.onOptionsItemSelected(item);
}


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

    gv = inflater.inflate(R.layout.inicio,container, false);
    FragmentPagerAdapter adapter = new GoogleMusicAdapter(getChildFragmentManager());
    ViewPager pager = (ViewPager) gv.findViewById(R.id.pager);
    pager.setAdapter(adapter);

    TabPageIndicator indicator = (TabPageIndicator) gv.findViewById(R.id.indicator);
    indicator.setViewPager(pager);

    return gv;
}

}
在实现FragmentPageAdapter上初始化:

class GoogleMusicAdapter extends FragmentPagerAdapter {

    public GoogleMusicAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        postab = position;
        return FragmentListaPendiente.init(position);

    }

    @Override
    public CharSequence getPageTitle(int position) {
        return CONTENT[position % CONTENT.length].toUpperCase();
    }

    @Override
    public int getCount() {
      return CONTENT.length;
    }

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

}
public class MyListaCompra extends SherlockFragment  {

View gv;
int postab = 0;
private static String[] CONTENT;

public static Intent newInstance(Activity activity,int pos) {
    Intent intent = new Intent(activity, MyListaCompra.class);
    return intent;
}
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    CONTENT = getResources().getStringArray(R.array.tabCompra);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu, menu);
    Log.i("Truiton FragmentList", "ON CREATE O!");
    super.onCreateOptionsMenu(menu, inflater);

}



@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Fragment newContent = null;
    SwipeMenuListFragment f = new SwipeMenuListFragment();
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.action_new:
        //newContent = new añadirCompra();
        Intent t = new Intent(getActivity(),DetallesListaCompra.class);
        getActivity().startActivityForResult(t, 0);
        break;

    default:
        break;
    }

    return super.onOptionsItemSelected(item);
}


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

    gv = inflater.inflate(R.layout.inicio,container, false);
    FragmentPagerAdapter adapter = new GoogleMusicAdapter(getChildFragmentManager());
    ViewPager pager = (ViewPager) gv.findViewById(R.id.pager);
    pager.setAdapter(adapter);

    TabPageIndicator indicator = (TabPageIndicator) gv.findViewById(R.id.indicator);
    indicator.setViewPager(pager);

    return gv;
}

}
和页面代码

    int fragNum;
private static View gv;
adapterCompra adapter;
private boolean result;
List<ListaCompra> lista = new ArrayList<ListaCompra>();


public static FragmentListaPendiente init(int val) {
    FragmentListaPendiente truitonList = new FragmentListaPendiente();

    // Supply val input as an argument.
    Bundle args = new Bundle();
    args.putInt("val", val);
    truitonList.setArguments(args);

    return truitonList;
}

 @Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
     fragNum = getArguments() != null ? getArguments().getInt("val") : 1;

}
/**
 * The Fragment's UI is a simple text view showing its instance number and
 * an associated list.
 */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    gv = inflater.inflate(R.layout.listframe,null);

    MiBBDD miZappe = new MiBBDD(getActivity(), "zappe", null, 1);

    SQLiteDatabase db =  miZappe.getWritableDatabase();
    Cursor c1;
    if(fragNum==0)
         c1 = utilsBBDD.ObtenerListasCompraPorHacerBBDDInterna(getActivity());
    else
         c1 = utilsBBDD.ObtenerListasCompraRealizadaBBDDInterna(getActivity());


    miZappe.close();
    if (c1!= null && c1.moveToFirst())
    {

        do {
            ListaCompra listaC = new ListaCompra();
            listaC.setId_lista(c1.getInt(0));
            listaC.setNombreLista(c1.getString(2));
            listaC.setStatus(c1.getInt(3));
            lista.add(listaC);
        } while (c1.moveToNext());


    c1.close();     
    }


    return gv;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onViewCreated(view, savedInstanceState);

}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    adapter = new adapterCompra(getActivity());
    for(int i=0;i<lista.size();i++){
        adapter.add(lista.get(i));
    }
    setListAdapter(adapter);

}


@Override
public void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

}

public class adapterCompra extends ArrayAdapter<ListaCompra> {
    CheckBox check;
    public adapterCompra(Context context) {
        super(context, 0);
    }


    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.inflate_lista, null);
        }
        final View v = convertView;
        v.setTag(lista.get(position).id_lista);
        TextView title = (TextView) convertView.findViewById(R.id.NombreLista);
        title.setText(getItem(position).getNombreLista());          
        check = (CheckBox) convertView.findViewById(R.id.checkBox1);
        if(fragNum==1)
            check.setChecked(true);

        final int pos = position;



        check.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if(buttonView.isChecked()){
                    AlertChangePurchase((Integer) v.getTag(), 1);       
                }
                else{
                    AlertChangePurchase((Integer) v.getTag(), 0);
                    if(!result)
                        buttonView.setChecked(true);
                    else
                        buttonView.setChecked(false);
                }

            }
        });
        return convertView;
    }

    public void AlertChangePurchase(final int id_compra,int status){

         AlertDialog.Builder alertDialog = new AlertDialog.Builder(gv.getContext());

            // Setting Dialog Title
            alertDialog.setTitle("COMPRA");
            result = true;
            if(status==0){
                alertDialog.setMessage(getResources().getString(R.string.AlertDeschekedCompra));
                conditionsAlert(alertDialog, id_compra, status);

            }
            else{
                 // Setting Dialog Message
                alertDialog.setMessage(getResources().getString(R.string.AlertChekedCompra));
                conditionsAlert(alertDialog, id_compra, status);
            }
            alertDialog.show();

    }

    public void conditionsAlert( AlertDialog.Builder alertDialog,final int id_compra,final int status){
        // On pressing Settings button
        alertDialog.setPositiveButton("Si", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {
                MiBBDD miZappe = new MiBBDD(getActivity(), "zappe", null, 1);
                utilsBBDD.CambiarStadoCompra(getActivity(), id_compra, status);
                miZappe.close();

            }
        });

        // on pressing cancel button
        alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
            if(status==0)
                result = false;
            }
        });
    }
}
int fragNum;
私有静态视图gv;
适配器计算机适配器;
私有布尔结果;
List lista=new ArrayList();
公共静态碎片列表apendiente init(int val){
FragmentListaPendiente truitonList=新的FragmentListaPendiente();
//提供val输入作为参数。
Bundle args=新Bundle();
参数putInt(“val”,val);
truitonList.setArguments(args);
返回truitonList;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
fragNum=getArguments()!=null?getArguments().getInt(“val”):1;
}
/**
*片段的UI是一个简单的文本视图,显示其实例号和
*关联的列表。
*/
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
gv=充气机充气(R.layout.listframe,空);
MiBBDD miZappe=new MiBBDD(getActivity(),“zappe”,null,1);
SQLiteDatabase db=miZappe.getWritableDatabase();
光标c1;
如果(fragNum==0)
c1=utilsBBDD.obtenerListAsComparaporHacerbbdinterna(getActivity());
其他的
c1=utilsBBDD.obtenerListAscoprarealizadabddinterna(getActivity());
miZappe.close();
if(c1!=null&&c1.moveToFirst())
{
做{
ListaCompra listaC=新ListaCompra();
setId_lista(c1.getInt(0));
setNombreLista(c1.getString(2));
listaC.setStatus(c1.getInt(3));
添加(listaC);
}而(c1.moveToNext());
c1.关闭();
}
返回gv;
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
//TODO自动生成的方法存根
super.onViewCreated(视图,savedInstanceState);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
adapter=新适配器compra(getActivity());

对于(int i=0;i您希望带有复选框的片段有一个侦听器接口,它通过该接口调用以通知复选框的更改。您的父活动实现此侦听器并接收消息。然后该活动对其他片段执行适当的操作

请参见以下参考:


如果您只想拥有带有复选框的listview,请使用PreferencesFragment,然后为此创建一个xml文件,该文件包含复选框首选项,并将其保存到SharedReferences。否,listview是自动生成的…我不希望PreferenceFragment…我希望在复选框更改时更新列表,并更新列表元素更改为其他页面,因此您需要使用共享首选项保存它们不,我想您不明白我的意思…我有两个带有列表视图的页面…我的想法是,我对列表中的一个元素进行了检查,列表将被更新,此广告将离开元素转到另一个页面