Autore Topic: onClick in una ListView  (Letto 845 volte)

Offline Carlos

  • Utente junior
  • **
  • Post: 74
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Zopo ZP1000
  • Play Store ID:
    Giovanni Miceli
  • Sistema operativo:
    Windows 8
onClick in una ListView
« il: 05 Luglio 2011, 22:27:29 CEST »
0
Ragazzi non riesco e far funzionare l'onClick su un button in una listview.
Questo è il mio codice:
Codice (Java): [Seleziona]
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class PreferitiAdapter extends ArrayAdapter<Preferiti2> {

        private int                     resource;
        private LayoutInflater  inflater;

        public PreferitiAdapter ( Context context, int resourceId, List<Preferiti2> objects ) {
                super( context, resourceId, objects );
                resource = resourceId;
                inflater = LayoutInflater.from( context );
        }

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

                // Recuperiamo l'oggetti che dobbiamo inserire a questa posizione
                Preferiti2 preferiti = getItem( position );

                PreferitiViewCache viewCache;

                if ( convertView == null ) {

                        convertView = inflater.inflate( resource, null );
                        viewCache = new PreferitiViewCache( convertView );
                        convertView.setTag( viewCache );
                }
                else {
                        viewCache = ( PreferitiViewCache ) convertView.getTag();
                }

                // Prendiamo le view dalla cache e mettiamoci i valori
                ImageView ivPhoto = viewCache.getImageViewPhoto();
                ivPhoto.setImageBitmap( preferiti.getBitmap());

                TextView tvName = viewCache.getTextViewName();
                tvName.setText( preferiti.getName() );
               
                Button btShowToast = viewCache.getButtonShowToast();
                btShowToast.setTag(0, preferiti);
                btShowToast.setTag(1, position);
               
                btShowToast.setOnClickListener(new OnClickListener() {
                        public void onClick(View view) {
                                int posizione = ((Integer)view.getTag(1)).intValue();
                                Preferiti_Listview x = new Preferiti_Listview();
                                x.adapter.notifyDataSetChanged();
                                Toast.makeText(
                                                view.getContext(),
                                                "Click sul bottone nella riga " + ((Preferiti2)view.getTag()).getName(),
                                                Toast.LENGTH_SHORT
                                                ).show();
                        }
                });

                return convertView;

        }
}

Codice (Java): [Seleziona]
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.util.ArrayList;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class Preferiti_Listview extends Activity {

        ListView listView;
        Cursor cursor;
        DB simpleHeaderTutorialDB = new DB(this);
        String Nome;
        PreferitiAdapter adapter;
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.preferiti);

                listView = (ListView) findViewById(R.id.lista_preferiti);

                adapter = new PreferitiAdapter(this, R.layout.preferiti_item,
                                new ArrayList<Preferiti2>());
               
                listView.setAdapter(adapter);

                listView.setOnItemClickListener(new OnItemClickListener() {
                        public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                                Preferiti2 p = (Preferiti2) parent.getItemAtPosition(position);
                                String Nome = p.getName();
                               
                                Intent i = new Intent(view.getContext(), x.class);

                                i.putExtra("Nome", Nome);

                                startActivity(i);
                        }
                });

                new BackgroundWorker().execute();
        }

        private class BackgroundWorker extends AsyncTask<Void, Preferiti2, Void> {

                @SuppressWarnings("unchecked")
                @Override
                protected void onPreExecute() {
                        // Prima di iniziare a inserire gli elementi svuotiamo l'adapter
                        ((ArrayAdapter<Preferiti2>) listView.getAdapter()).clear();
                        super.onPreExecute();
                }

                @Override
                protected Void doInBackground(Void... params) {

                        SQLiteDatabase database = simpleHeaderTutorialDB
                                        .getWritableDatabase();

                        cursor = database.rawQuery("SELECT PREFERITI._id "
                                        + "FROM PREFERITI " + "order by PREFERITI.AUTO_INCREMENT",
                                        null);

                        ArrayList<Preferiti2> preferitiList = new ArrayList<Preferiti2>();

                        int count = cursor.getCount();
                        for (int i = 0; i < count; i++) {
                                while (cursor.moveToNext()) {
                                        Nome = cursor.getString(0);
                                        Bitmap bMap = null;
                                        InputStream in;
                                        BufferedInputStream buf = null;
                                        try {
                                                String imageName = Nome.replace("è", "e").replace("ò",
                                                                "o")
                                                                + ".jpg";

                                                AssetManager assetManager = getAssets();
                                                in = assetManager.open(imageName);
                                                bMap = BitmapFactory.decodeStream(in);

                                                if (in != null) {
                                                        in.close();
                                                }
                                                if (buf != null) {
                                                        buf.close();
                                                }
                                        } catch (Exception e) {
                                                Log.e("Error reading file", e.toString());
                                        }
                                        Preferiti2[] preferiti = { new Preferiti2(Nome, bMap) };

                                        Preferiti2 p = preferiti[i];
                                        publishProgress(p);

                                        preferitiList.add(preferiti[i]);

                                }
                                cursor.close();
                        }
                        return null;
                }

                @SuppressWarnings("unchecked")
                @Override
                protected void onProgressUpdate(Preferiti2... values) {
                        // Aggiungiamo il progresso pubblicato all'adapter
                        ((ArrayAdapter<Preferiti2>) listView.getAdapter()).add(values[0]);
                        super.onProgressUpdate(values);
                }
        }
                @Override
                public boolean onCreateOptionsMenu(Menu menu) {
                        MenuInflater inflater = getMenuInflater();
                        inflater.inflate(R.layout.menu, menu);
                        return true;
                }

                @Override
                public boolean onOptionsItemSelected(MenuItem item) {
                        switch (item.getItemId()) {
                        case R.id.icon:
                                final Dialog dialog = new Dialog(Preferiti_Listview.this);
                                dialog.setContentView(R.layout.dialog_conferma_cancella_tutto);
                                dialog.setTitle("Elimina Tutti Preferiti");
                                dialog.setCancelable(true);

                                Button pref = (Button) dialog.findViewById(R.id.Accept);
                                pref.setOnClickListener(new OnClickListener() {
                                        @Override
                                        public void onClick(View v) {
                                                dialog.cancel();

                                                CancellaTutto();

                                                Intent i = new Intent(v.getContext(), main.class);
                                                startActivityForResult(i, 0);
                                                finish();

                                                Context context = getApplicationContext();
                                                CharSequence text = "Tutti i preferiti sono stati cancellati con successo !";
                                                int duration = 1000;

                                                Toast toast = Toast.makeText(context, text, duration);
                                                toast.setGravity(Gravity.CENTER, 0, 0);
                                                toast.show();
                                        }
                                });

                                Button close = (Button) dialog.findViewById(R.id.Delete);
                                close.setOnClickListener(new OnClickListener() {
                                        @Override
                                        public void onClick(View v) {
                                                dialog.cancel();
                                        }
                                });
                                dialog.show();
                                break;
                        }
                        return true;
                }

                public void CancellaTutto() {
                        DB simpleHeaderTutorialDB = new DB(this);
                        final SQLiteDatabase database = simpleHeaderTutorialDB
                                        .getWritableDatabase();
                        database.delete(Preferiti.TABLE_NAME, null, null);
                        database.close();
                }
        }

Come faccio a cliccare sul pulsante e cancellare la riga ?