Autore Topic: listview con checkbox in fragment  (Letto 262 volte)

Offline markella92

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
listview con checkbox in fragment
« il: 28 Aprile 2016, 16:33:43 CEST »
0
Salve ragazzi, ho una listview con checkbox in un activity....però ora mi servirebbe una list view con checkbox in FRAGMENT.
Come posso fare?
Ora vi posto il codice dell'activity:

Codice: [Seleziona]
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ListView;

import java.util.ArrayList;

public class Main extends ActionBarActivity implements
                android.widget.CompoundButton.OnCheckedChangeListener {

        ListView lv;
        ArrayList<Planet> planetList;
        PlanetAdapter plAdapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                lv = (ListView) findViewById(R.id.listview);
                displayPlanetList();


        }

        private void displayPlanetList() {

                planetList = new ArrayList<Planet>();
                planetList.add(new Planet("Margherita", 6, "€"));
                planetList.add(new Planet("Diavola", 7,"€"));
                planetList.add(new Planet("Bufalina", 5,"€"));
                planetList.add(new Planet("Marinara", 5,"€"));
                planetList.add(new Planet("Viennese", 4,"€"));

                plAdapter = new PlanetAdapter(planetList, this);
                lv.setAdapter(plAdapter);
        }

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                int pos = lv.getPositionForView(buttonView);
                if (pos != ListView.INVALID_POSITION) {
                        Planet p = planetList.get(pos);
                        p.setSelected(isChecked);


                        /*Toast.makeText(
                                        this,
                                        "Clicked on Planet: " + p.getName() + ". State: is "
                                                        + isChecked, Toast.LENGTH_SHORT).show();*/
                }

        }
        public void showResult(View v) {
                String result = "Selected Product are :";
                int totalAmount=0;

                for (Planet p : plAdapter.getBox()) {
                        if (p.selected){
                                result += "\n" + p.name+" "+p.distance+"€"+"q.tà :"+p.getQuantità();
                                //if (p.quantità.equals("") && p.quantità.equals(null) ){
                                System.out.println("leggo questo record:"+p.name + " " + p.distance + " " + p.quantità );

                                System.out.println("leggo questo p.getquatità :"+p.quantità );
                                //}
                                //else{
                                        System.out.println("leggo questo in p.quantità: "+p.getQuantità());
                                        int quantitaInt= Integer.parseInt(p.getQuantità() );
                                        totalAmount+=p.distance * quantitaInt;
                                //}
                        }
                }
//            Toast.makeText(this, result+"\n"+"Total Amount:="+totalAmount, Toast.LENGTH_LONG).show();
                //Integer.toString(totalAmount);
                Intent i = new Intent(Main.this, SecondActivity.class);
                i.putExtra("NomeDati1", result);
                i.putExtra("NomeDati2", String.valueOf(totalAmount));
                startActivity(i);

        }
}

Codice: [Seleziona]
class Planet {
       
        String name;
        int distance;
        String quantità;
        String valuta;
        boolean selected = false;



        public Planet(String name, int distance, String quantità) {
                super();
                this.name = name;
                this.distance = distance;
                this.quantità = quantità;
        }

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getDistance() {
                return distance;
        }

        public void setDistance(int distance) {
                this.distance = distance;
        }

        public boolean isSelected() {
                return selected;
        }

        public void setSelected(boolean selected) {
                this.selected = selected;
        }

        public String getQuantità() {
                return quantità;
        }

        public void setQuantità(String quantità) {
                this.quantità = quantità;
        }
        public String getValuta() {
                return valuta;
        }

        public void setValuta(String valuta) {
                this.valuta = valuta;
        }

}

public class PlanetAdapter extends ArrayAdapter<Planet>{

        private List<Planet> planetList;
        private Context context;
        ArrayList<Planet> objects;


        public PlanetAdapter(List<Planet> planetList, Context context) {
                super(context, R.layout.single_listview_item, planetList);
                this.planetList = planetList;
                this.context = context;
        }

        public  class PlanetHolder {
                public TextView planetName;
                public TextView distView;
                public CheckBox chkBox;
                public EditText edit;
                public String quantità;



        }
       
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

                /*View v = convertView;

                final PlanetHolder holder = new PlanetHolder();

                if(convertView == null) {

                        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        v = inflater.inflate(R.layout.single_listview_item, null);

                        holder.planetName = (TextView) v.findViewById(R.id.name);
                        holder.distView = (TextView) v.findViewById(R.id.dist);
                        holder.chkBox = (CheckBox) v.findViewById(R.id.chk_box);
                        holder.edit = (EditText) v.findViewById(R.id.editText);
                        //holder.edit=holder.quantità;
                        //holder.quantità=(EditText) v.findViewById(R.id.editText);
                        holder.edit.setVisibility(View.GONE);
                        holder.edit.setEnabled(false);



                        final Planet p = planetList.get(position);


                        holder.chkBox.setOnCheckedChangeListener((Main) context);

                        //
                        holder.chkBox.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                        // TODO Auto-generated method stub
                                        if (holder.chkBox.isChecked()) {

                                                holder.edit.setVisibility(View.VISIBLE);
                                                holder.edit.setEnabled(true);

                                                //holder.quantità = holder.edit.getText().toString();
                                                //System.out.println("leggo questo dalla edittext:"+ holder.edit.getText().toString());


                                                holder.edit.addTextChangedListener(new TextWatcher() {
                                                        @Override
                                                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                                                        }

                                                        @Override
                                                        public void onTextChanged(CharSequence s, int start, int before, int count) {

                                                                *//*holder.quantità=(holder.edit.getText().toString());
                                                                System.out.println("leggo questo dalla edittext:" + holder.quantità);

*//*

                                                                *//*holder.quantità = holder.edit.getText().toString().trim();

                                                                System.out.println("leggo questo dalla edittext:"+ holder.edit.getText().toString().trim());
*//*

                                                        }

                                                        @Override
                                                        public void afterTextChanged(Editable s) {
                                                                *//*holder.quantità = holder.edit.getText().toString();
                                                                System.out.println("leggo questo dalla edittext:"+ holder.edit.getText().toString());*//*
                                                                holder.quantità = holder.edit.getText().toString().trim();

                                                                System.out.println("leggo questo dalla edittext:"+ holder.edit.getText().toString().trim());


                                                        }
                                                });


                                        } else {
                                                holder.edit.setVisibility(View.GONE);
                                                holder.edit.setEnabled(false);
                                                holder.edit.setText(null);

                                        }
                                }

                        });
                        //

                        } else {
                        //holder = (PlanetHolder) v.getTag();
                }


                Planet p = planetList.get(position);

                p.setQuantità(holder.quantità);

                holder.planetName.setText(p.getName());
                holder.distView.setText("" + p.getDistance());
                holder.chkBox.setChecked(p.isSelected());
                holder.chkBox.setTag(p);
                holder.edit.setEnabled(false);
                //holder.quantità=holder.edit.getText().toString();

                return v;*/
                View row = convertView;
                PlanetHolder holder = null;
                if (row == null) {
                        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                        row = inflater.inflate(R.layout.single_listview_item, parent, false);
                        holder = new PlanetHolder();
                        holder.planetName = (TextView) row.findViewById(R.id.name);
                        holder.distView = (TextView) row.findViewById(R.id.dist);
                        holder.chkBox = (CheckBox) row.findViewById(R.id.chk_box);
                        holder.edit = (EditText) row.findViewById(R.id.editText);
                        holder.edit.setVisibility(View.GONE);
                        holder.edit.setEnabled(false);
                        row.setTag(holder);
                } else {
                        holder = (PlanetHolder) row.getTag();
                }
                final Planet p = planetList.get(position);

                holder.chkBox.setOnCheckedChangeListener((Main) context);
                final PlanetHolder finalHolder = holder;
                holder.chkBox.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                if (finalHolder.chkBox.isChecked()) {
                                        finalHolder.edit.setVisibility(View.VISIBLE);
                                        finalHolder.edit.setEnabled(true);
                                        finalHolder.edit.addTextChangedListener(new TextWatcher() {
                                                @Override
                                                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                                                }

                                                @Override
                                                public void onTextChanged(CharSequence s, int start, int before, int count) {
                                                }

                                                @Override
                                                public void afterTextChanged(Editable s) {
                                                        p.setQuantità(finalHolder.edit.getText().toString().trim());
                                                }
                                        });
                                } else {
                                        finalHolder.edit.setVisibility(View.GONE);
                                        finalHolder.edit.setEnabled(false);
                                        finalHolder.edit.setText(null);
                                }
                        }
                });
                holder.planetName.setText(p.getName());
                holder.distView.setText("" + p.getDistance());
                holder.chkBox.setChecked(p.isSelected());
                holder.chkBox.setTag(p);
                holder.edit.setEnabled(false);

                return row;
        }


        ArrayList<Planet> getBox() {
                ArrayList<Planet> box = new ArrayList<Planet>();
                for (Planet p : planetList) {
                        if (p.selected)
                                box.add(p);
                }
                return box;
        }


}


XML
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal" >

    <CheckBox
       android:id="@+id/chk_box"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true" />
    <LinearLayout
       android:id="@+id/linearLayout1"
       android:layout_width="0dp"
       android:layout_height="wrap_content"
       android:layout_marginLeft="5dp"
       android:orientation="vertical"
       android:layout_weight="1" >
   
    <TextView
       android:id="@+id/name"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_toRightOf="@id/chk_box"
       android:textStyle="bold" />
   
    <TextView
       android:id="@+id/dist"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/name"
       android:layout_toRightOf="@id/chk_box"
       android:textSize="12sp"
       android:textStyle="italic" />
    <EditText
       android:layout_width="196dp"
       android:layout_height="wrap_content"
       android:inputType="number"
       android:ems="10"
       android:id="@+id/editText"
       android:hint="quantità"
       >
    </EditText>
    </LinearLayout>

</LinearLayout>

XML
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >

    <ListView
       android:id="@+id/listview"
       android:layout_width="fill_parent"
       android:layout_height="400dp">
       
    </ListView>
    <Button
       android:layout_width="200dp"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:onClick="showResult"
       android:text="get_answer">
    </Button>


</LinearLayout>

il Risultato è nell'allegato.

Grazie in anticipo