Autore Topic: Aggiornamento dati tra fragment  (Letto 311 volte)

Offline ziofrank

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Aggiornamento dati tra fragment
« il: 01 Dicembre 2014, 12:08:06 CET »
0
Buongiorno a tutti,
sto sviluppando un app composta da uno slide menu e un fixed tabs di tre elementi. Ogni elemento è un fragment, in particolare l'elemento centrale racchiude una list view composta da testo e immagine ( stellina preferiti) e l'elemento di sinistra racchiude i preferiti. Il mio problema consiste nel selezionare dall'elenco principale alcuni elementi e aggiornare subito il fragment dei preferiti. La situazione che ho ora è che il fragment dei preferiti si aggiorna solo se passo per il terzo elemento e non ne capisco il motivo.  :'(
Sono alle prime armi con android e praticamente sto imparando da solo quindi scusate se ho detto qualche cavolata. Di seguito posto il codice dell'elenco principale e poi dei preferiti:

Codice (Java): [Seleziona]
 
public class NewsDecretiFragment extends Fragment {
               
    private DatabaseHelper db;
    private SimpleCursorAdapter dataAdapter;
   
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View v = inflater.inflate(R.layout.newsdecretifragment, container, false);
                db =  new DatabaseHelper(getActivity());
                Cursor cursor = db.getAllDecreti();
               
                 // The desired columns to be bound
                  String[] columns = new String[] {
                                  DecretoTable.NOME,
                                  DecretoTable.ARGOMENTO,
                                  DecretoTable._ID
                  };
                 
                  // the XML defined views which the data will be bound to
                  int[] to = new int[] {
                    R.id.textViewList,
                    R.id.textViewList1,
                    R.id.txt_id            
                  };
               
                dataAdapter = new SimpleCursorAdapter(getActivity(),R.layout.row,cursor,columns,to);
               
                final ListView listView = (ListView)v.findViewById(R.id.listaDecreti);
                                       
        listView.setAdapter(dataAdapter);              
        OnItemClickListener clickListener = new OnItemClickListener() {
               
                @Override
            public void onItemClick(AdapterView<?> adapter, View view,
                int position, long id) {
                        final TextView id_decreto = (TextView) view.findViewById(R.id.txt_id);
                       
               
                TextView txt = (TextView) view.findViewById(R.id.textViewList);
                txt.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View arg0){
                                Intent intent = new Intent(getActivity(),Decreto.class);
                                String pkg=getActivity().getPackageName();
                                intent.putExtra(pkg+"IdDecreto", id_decreto.getText().toString());
                                startActivity(intent);
                       
                        }
                });
               
                 
                final ImageView image = (ImageView) view.findViewById(R.id.star);
                image.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View arg0){
                               
                                if(db.getPreferitoDecreto(Integer.parseInt(id_decreto.getText().toString())))
                                {      
                                        image.setColorFilter(Color.WHITE);
                                        db.setPrefetitoDecreto(Integer.parseInt(id_decreto.getText().toString()), 0);
                                        Toast.makeText(getActivity(), "Rimosso dai preferiti " ,Toast.LENGTH_SHORT).show();
                                }
                                else
                                {
                                        image.setColorFilter(Color.YELLOW);
                                        db.setPrefetitoDecreto(Integer.parseInt(id_decreto.getText().toString()), 1);
                                        Toast.makeText(getActivity(), "Aggiunto ai preferiti " ,Toast.LENGTH_SHORT).show();
                                }
                        }
                });
            }
               
        };
        listView.setOnItemClickListener(clickListener);
               
                return v;
        }
       

}


Codice (Java): [Seleziona]
public class PrefDecretiFragment extends Fragment{
       
    private DatabaseHelper db;
    private SimpleCursorAdapter dataAdapter;
   
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View v = inflater.inflate(R.layout.preferitifragment, container, false);
               
                db =  new DatabaseHelper(getActivity());
               
                final ListView listView = (ListView)v.findViewById(R.id.listaPreferiti);
                final TextView txtpref = (TextView)v.findViewById(R.id.textPreferiti);
                Cursor cursor = db.getAllPreferitiDecreti();

               
                if(cursor.getCount()==0){
                        listView.setVisibility(View.GONE);
                        txtpref.setVisibility(View.VISIBLE);
                       
                }
                else{
               
                         listView.setVisibility(View.VISIBLE);
                         txtpref.setVisibility(View.GONE);
                         // The desired columns to be bound
                          String[] columns = new String[] {
                                          DecretoTable.NOME,
                                          DecretoTable._ID
                          };
                         
                          // the XML defined views which the data will be bound to
                          int[] to = new int[] {
                            R.id.textViewList,
                            R.id.txt_id            
                          };
                       
                         dataAdapter = new SimpleCursorAdapter(getActivity(),R.layout.row,cursor,columns,to);
                       
                         
                     
                         listView.setAdapter(dataAdapter);
                }
        return v;
        }

}

Grazie in anticipo :)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1186
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Aggiornamento dati tra fragment
« Risposta #1 il: 01 Dicembre 2014, 12:24:36 CET »
0
Da cell fatico a capire. Comunque per far comunicare 2 fragment devi passare per l'activity. Ce un esempio nella documentazione google

Offline ziofrank

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Aggiornamento dati tra fragment
« Risposta #2 il: 01 Dicembre 2014, 17:05:53 CET »
0
Grazie per la risposta, quando puoi riesci cortesemente a guardare il codice perché ho guardato davvero ovunque ma non riesco a capire...
grazie in anticipo  :-)