使用listfragment更新FragmentPagerAdapter

时间:2014-01-26 18:25:32

标签: android listview checkbox android-fragments

我想要更新/刷新FragmentPageAdapter的页面。 在每个页面中,我都有一个自定义ListView With复选框,当我选中一个时,我想刷新页面,这个选择传递到其他页面。

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

arrayAdapter我塞满了BBDD数据

我一直在这里寻找,但找不到明确的解决方案..抱歉

代码是:

使用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;
    }

}

实现FragmentPageAdapter的类:

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;
            }
        });
    }
}

抱歉我的英文

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您希望带有复选框的片段具有调用的Listener接口,以通知复选框更改。您的父活动实现此侦听器并接收消息。然后,活动对其他片段执行适当的操作。

请参阅此参考:

http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity