Autore Topic: Passaggio dati tra classeAdapter e classe della Activity  (Letto 575 volte)

Offline matteopery

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g2
  • Sistema operativo:
    windows 8
Passaggio dati tra classeAdapter e classe della Activity
« il: 14 Aprile 2015, 23:48:51 CEST »
0
Ciao a tutti :-) Nella classe dell'adapter della mia listView ho inserito il codice relativo al click su un'item della lista.Al click mi mette in un array(arrayIndex) l'ID dell relativo item. Quello di cui ho bisogno è di passare i valori di questo array in un'altra classe(la classe di una activity) ma non so come fare, ho provato in tutti i modi ma non ho trovato alcuna soluzione, qualcuno mi può aiutare?qui sotto metto il codice relativo all' adapter

Codice (Java): [Seleziona]
public class GetAllCostumerListViewAdapter extends BaseAdapter{
    boolean[] checked;
    int[] arrayIndex;
    private JSONArray dataArray;
    private Activity activity;
    boolean selected=false;
    private static LayoutInflater inflater=null;

    public GetAllCostumerListViewAdapter(JSONArray jsonArray,Activity a)
    {

        this.dataArray=jsonArray;
        this.activity=a;

        inflater=(LayoutInflater) this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        checked= new boolean[jsonArray.length()];
        arrayIndex=new int[jsonArray.length()];

      //  String s=Integer.toString(jsonArray.length());
      // Toast.makeText(a,s,Toast.LENGTH_SHORT).show();
        for(int i=0; i<checked.length; i++){
            checked[i]=false;
           // String l=String.valueOf(checked[i]);
            //Toast.makeText(a,l ,Toast.LENGTH_SHORT).show();
        }
           // checked[i]=false;


    }

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


    @Override
    public Object getItem(int position) {
        return position;
    }


    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
      final ListCell cell;
      if (convertView==null)
      {
            convertView=inflater.inflate(R.layout.get_all_carrello_list_view_cell, null);

          cell=new ListCell();

          cell.Id=(TextView) convertView.findViewById(R.id.customer_id);
          cell.NomeProdotto=(TextView) convertView.findViewById(R.id.customer_nome_prodotto);
          cell.Dettagli=(TextView) convertView.findViewById(R.id.customer_dettagli);
          cell.Chk=(CheckBox) convertView.findViewById(R.id.customer_checkbox);

          convertView.setTag(cell);

      }
      else
      {
            cell=(ListCell)convertView.getTag();
      }


        try
        {
            JSONObject jsonObject=this.dataArray.getJSONObject(position);

            cell.NomeProdotto.setText(jsonObject.getString("NomeProdotto"));
            cell.Dettagli.setText(jsonObject.getString("Dettagli"));
            cell.Id.setText(jsonObject.getString("id"));

        }
        catch (JSONException e)
        {
          e.printStackTrace();
        }
//questo è il codice del click sull'item della lista, al click riempie l'arrayIndex con il relativo indice
convertView.setOnClickListener(new View.OnClickListener() {


    @Override
    public void onClick(View v) {

        int i;

String m=Integer.toString(position);
if(!cell.Chk.isChecked()) {
    cell.Chk.setChecked(true);

    //checked[position]=true;

    arrayIndex[position]=Integer.parseInt(cell.Id.getText().toString());

   // Toast.makeText(parent.getContext(),l ,Toast.LENGTH_SHORT).show();
}else {
    cell.Chk.setChecked(false);
   // checked[position]=false;
    arrayIndex[position]=0;


}
for (int y=0;y<2;y++)
{
    System.out.println(checked[y]);
    System.out.println(arrayIndex[y]);
}

    }

});

        return convertView;


    }

    private class ListCell
    {

        private TextView NomeProdotto;
        private TextView Dettagli;
        private CheckBox Chk;
        private TextView Id;

    }
}

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #1 il: 15 Aprile 2015, 07:33:01 CEST »
0
Se devi passare i dati esattamente nell' activity dove hai inizializzato la list view allora setti un OnItemClickListener sulla list view.

Se hai item di tipo ListCell allora quel l'interfaccia espone la posizione cliccata. Ora fai adaper.getItem(posizione). E ti ritorna ListCell cliccato.

Li ovviamente fai quello che devi fare

Offline matteopery

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g2
  • Sistema operativo:
    windows 8
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #2 il: 15 Aprile 2015, 12:21:16 CEST »
0
Se devi passare i dati esattamente nell' activity dove hai inizializzato la list view allora setti un OnItemClickListener sulla list view.

Se hai item di tipo ListCell allora quel l'interfaccia espone la posizione cliccata. Ora fai adaper.getItem(posizione). E ti ritorna ListCell cliccato.

Li ovviamente fai quello che devi fare
Questo ok ma quello di cui ho bisogno è semplicemente prendere un array già riempito nella classe che ho allegato sopra, e portarlo in un'altra classe dove poi lo utilizzerò.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #3 il: 15 Aprile 2015, 13:41:56 CEST »
0
Usa qualche singleton in application.

Offline matteopery

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g2
  • Sistema operativo:
    windows 8
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #4 il: 15 Aprile 2015, 14:29:12 CEST »
0
Ovvero? Non è molto che programmo Android e non ho idea di cosa sia

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #5 il: 15 Aprile 2015, 14:31:38 CEST »
0
Ripeto. Usa 5 minuti per crearti l' array all'interno dell' activity e non nell' adapter. È la soluzione migliore e più facile

Post unito: 15 Aprile 2015, 14:33:37 CEST
Comunqie se hai creato la tua array dentro l' adapter immagino hai un tuo CustomAdapter. mettici un metodo pubblico del tipo:
public String[] geyMyArray().
Dalla tua activity chiami il metodo
« Ultima modifica: 15 Aprile 2015, 14:33:37 CEST da tonno16, Reason: Merged DoublePost »

Offline matteopery

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g2
  • Sistema operativo:
    windows 8
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #6 il: 15 Aprile 2015, 14:35:17 CEST »
0
Si ok quello non è un problema ma come puoi vedere nel codice sopra quell' array si riempie con una funzione nell adapter.
Non saprei come fare a riempirlo se lo creo nell activity..

Offline LinkOut

  • Utente normale
  • ***
  • Post: 269
  • Respect: +37
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #7 il: 15 Aprile 2015, 14:37:23 CEST »
0
Io consiglierei : EventBus https://github.com/greenrobot/EventBus

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #8 il: 15 Aprile 2015, 14:43:38 CEST »
0
Anche Otto potrebbe essere candidata

Offline matteopery

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g2
  • Sistema operativo:
    windows 8
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #9 il: 15 Aprile 2015, 15:45:48 CEST »
0
Comunqie se hai creato la tua array dentro l' adapter immagino hai un tuo CustomAdapter. mettici un metodo pubblico del tipo:
public String[] geyMyArray().
Dalla tua activity chiami il metodo

Ho inserito nell'adapter questo, ora come lo chiamo dall'activity?
Codice (Java): [Seleziona]
public int[] getMyAttay()
    {
return arrayIndex;
    }
Qualcuno può aiutarmi?
« Ultima modifica: 16 Aprile 2015, 10:50:26 CEST da matteopery »

Offline matteopery

  • Nuovo arrivato
  • *
  • Post: 26
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg g2
  • Sistema operativo:
    windows 8
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #10 il: 17 Aprile 2015, 17:55:30 CEST »
0
Nessuno può aiutarmi?  :'(

Offline tonno16

  • Utente storico
  • *****
  • Post: 1184
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Passaggio dati tra classeAdapter e classe della Activity
« Risposta #11 il: 18 Aprile 2015, 09:36:48 CEST »
0
Hai creato un adapter di nome mioadapter. Ora se hai implementato quel metodo, chiami mioadapter.getMyArray();