我想要更新/刷新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;
}
});
}
}
抱歉我的英文
感谢您的帮助
答案 0 :(得分:0)
您希望带有复选框的片段具有调用的Listener接口,以通知复选框更改。您的父活动实现此侦听器并接收消息。然后,活动对其他片段执行适当的操作。
请参阅此参考:
http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity