Autore Topic: Consiglio con Checked Text View...Come procedere?  (Letto 579 volte)

Offline Smoke666

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 11.04, Windows 7
Consiglio con Checked Text View...Come procedere?
« il: 28 Luglio 2012, 14:36:37 CEST »
0
Ciao a tutti ragazzi, mi rivolgo a voi per avere un consiglio. Ho realizzato una checked text view seguendo un tutorial, e l'ho modificato leggermente. Ho aggiunto un nuovo campo all'oggetto, e vorrei un consiglio su come (o meglio, dove) richiamarlo all'interno del codice.
Mi spiego meglio, il mio oggetto ha un nome, e un valore numerico, io voglio non solo stampare in una stringa tutti i prodotti selezionati, ma vorrei salvare in una variabile la somma dei campi "price" degli oggetti selezionati. Allego un po di codice:

Codice (Java): [Seleziona]
public class rosticceria extends ListActivity implements OnClickListener {
   
        // store CheckTextView's
    private HashMap<Integer, CheckedTextView> mCheckedList =
                    new HashMap<Integer, CheckedTextView>();
    // store state
    private HashMap<Integer, Boolean> mIsChecked =
                    new HashMap<Integer, Boolean>();
    // list of fruits
    private ArrayList<Fruit> mList;

       
        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prodotti);

        Button continueButton = (Button) findViewById(R.id.continua);
        continueButton.setOnClickListener(this);
        mList = getListData();

        setListAdapter(new MyAdapter(this, R.layout.row, mList));
    }
   
    public void onClick(View v) {
            if (v.getId() == R.id.continua) {
                    // put all selected fruits in a list
                    ArrayList<String> fruitSelection = new ArrayList<String>();                    
                    for (int i=0; i < mList.size(); i++) {
                            if (mIsChecked.get(i) != null) {
                                    if (mIsChecked.get(i)) {
                                            fruitSelection.add(mList.get(i).getName());
                                    }
                            }
                    }
                    // display fruit selection
                    Intent intent = new Intent(this, second.class);
                    intent.putStringArrayListExtra("fruits", fruitSelection);                      
                    startActivity(intent);
            } else {
                    // get the CheckedTextView
                    CheckedTextView ct = mCheckedList.get(v.getTag());
                    if (ct != null) {
                            // change the state and colors
                            ct.toggle();
                            if (ct.isChecked()) {
                                    ct.setTextColor(Color.BLACK);
                            } else {
                                    ct.setTextColor(Color.parseColor("#c0c0c0"));
                            }
                            // add current state to map
                            mIsChecked.put((Integer) v.getTag(), ct.isChecked());
                    }
            }
    }
    private class MyAdapter extends ArrayAdapter<Fruit> {

        private ArrayList<Fruit> items;
        private String[] colors = { "#F4FFEA", "#99FF99" };

        public MyAdapter(Context context, int textViewResourceId, ArrayList<Fruit> items) {
                super(context, textViewResourceId, items);
                this.items = items;
        }

        public View getView(final int position, View view, ViewGroup parent) {
                // we are not reusing anything today
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = vi.inflate(R.layout.row, null);
               
                int colorPos = position % colors.length;
            view.setBackgroundColor(Color.parseColor(colors[colorPos]));

                CheckedTextView ct = (CheckedTextView) view.findViewById(R.id.checkedTextView);
                ct.setText(items.get(position).getName());
                // set current state and color
                if (mIsChecked.get(position) != null) {
                        if (mIsChecked.get(position)) {
                                ct.setChecked(true);
                                ct.setTextColor(Color.WHITE);
                        } else {
                                ct.setTextColor(Color.parseColor("#c0c0c0"));
                        }
                }
                // tag it - used when clicked upon to change state
                ct.setTag(position);
                mCheckedList.put(position, ct);
                ct.setOnClickListener(rosticceria.this);

                return view;
        }
}

private ArrayList<Fruit> getListData() {
        ArrayList<Fruit> list = new ArrayList<Fruit>();
        String[] objects = {}; //tutti i nomi degli oggetti stanno qui
        Double[] prezzi = {}; //i prezzi stanno qui

        Fruit fruit;
        for (int i=0; i < objects.length; i++) {
                for(int k=0;k<prezzi.length;k++){
                fruit = new Fruit();
                fruit.setName(objects[i]);
                fruit.setPrize(prezzi[k]);
                list.add(fruit);
                }
        }

        return list;
}

private class Fruit {
        private String name;    
        private Double price;
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public Double getPrice(){
                return price;
        }
        public void setPrize(Double price){
                this.price = price;
       }
}      
}

Chiedo scusa per la lunghezza del codice! Grazie in anticipo!  ;-)