Autore Topic: attivare oggetti editText al click della checkbox corrispondente  (Letto 336 volte)

Offline markella92

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
0
Codice: [Seleziona]
Salve ragazzi, con il codice che vi posto, di default gli editText non sono "scrivibili"...fin qui ok...però quando clicco sulla checkbox corrispondente l'EditText è sempre non "scrivibile"...come mai?

Grazie in anticipo

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

public class ListAdapter extends BaseAdapter {
        Context ctx;
        LayoutInflater lInflater;
        ArrayList<Product> objects;
        EditText et;

        ListAdapter(Context context, ArrayList<Product> products) {
                ctx = context;
                objects = products;
                lInflater = (LayoutInflater) ctx
                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
                return objects.size();
        }

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View view = convertView;
                if (view == null) {
                        view = lInflater.inflate(R.layout.item, parent, false);
                }

                Product p = getProduct(position);

                ((TextView) view.findViewById(R.id.tvDescr)).setText(p.name);
                ((TextView) view.findViewById(R.id.tvPrice)).setText(p.price + "");
                et= (EditText)view.findViewById(R.id.editText);
                et.setEnabled(false);



                ((ImageView) view.findViewById(R.id.ivImage)).setImageResource(p.image);

                CheckBox cbBuy = (CheckBox) view.findViewById(R.id.cbBox);
                cbBuy.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                                if (((CheckBox) v).isChecked()) {
                                        et.setEnabled(true);


                                } else
                                        et.setEnabled(false);
                                et.setText("");


                        }
                });
                cbBuy.setOnCheckedChangeListener(myCheckChangList);
                cbBuy.setTag(position);
                cbBuy.setChecked(p.box);
                return view;
        }

        Product getProduct(int position) {
                return ((Product) getItem(position));
        }

        ArrayList<Product> getBox() {
                ArrayList<Product> box = new ArrayList<Product>();
                for (Product p : objects) {
                        if (p.box)
                                box.add(p);
                }
                return box;
        }

        OnCheckedChangeListener myCheckChangList = new OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView,
                                boolean isChecked) {
                        getProduct((Integer) buttonView.getTag()).box = isChecked;
                }
        };
}

Post unito: [time]21 Aprile 2016, 15:34:42 CEST[/time]
Codice: [Seleziona]

public class Product {
        String name;
          int price;
          int image;
          boolean box;
         

          Product(String _describe, int _price, int _image, boolean _box) {
            name = _describe;
            price = _price;
            image = _image;
            box = _box;
          }
        }

Post unito: 21 Aprile 2016, 15:35:20 CEST
Codice: [Seleziona]

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends Activity {

        ArrayList<Product> products = new ArrayList<Product>();
        ListAdapter boxAdapter;
        EditText et;

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

            fillData();
            boxAdapter = new ListAdapter(this, products);

            ListView lvMain = (ListView) findViewById(R.id.lvMain);
            lvMain.setAdapter(boxAdapter);

          }


          void fillData() {
            for (int i = 1; i <= 20; i++) {
              products.add(new Product("Product " + i, i * 100,
                  R.drawable.ic_launcher, false));
            }
          }

          public void showResult(View v) {
            String result = "Selected Product are :";
            int totalAmount=0;
            for (Product p : boxAdapter.getBox()) {
              if (p.box){
                result += "\n" + p.name;
                totalAmount+=p.price;
              }
            }
//            Toast.makeText(this, result+"\n"+"Total Amount:="+totalAmount, Toast.LENGTH_LONG).show();
                  Integer.toString(totalAmount);
                  Intent i = new Intent(MainActivity.this, SecondActivity.class);
                  i.putExtra("NomeDati1", result);
                  i.putExtra("NomeDati2", String.valueOf(totalAmount));
                  startActivity(i);

          }
        }
« Ultima modifica: 21 Aprile 2016, 15:35:20 CEST da markella92, Reason: Merged DoublePost »