From ee90d55080edcc48910bb68df9c1fcde64dea3ce Mon Sep 17 00:00:00 2001 From: Fernando Herrera Date: Thu, 10 Mar 2011 00:33:46 +0100 Subject: [PATCH] I9: Checkboxes y Adapter propio --- res/layout/list_item.xml | 6 ++ src/com/onirica/carrousel/Configuration.java | 88 +++++++++++++++++++- 2 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 res/layout/list_item.xml diff --git a/res/layout/list_item.xml b/res/layout/list_item.xml new file mode 100644 index 0000000..9f45177 --- /dev/null +++ b/res/layout/list_item.xml @@ -0,0 +1,6 @@ + + + diff --git a/src/com/onirica/carrousel/Configuration.java b/src/com/onirica/carrousel/Configuration.java index 5e91416..78b5100 100644 --- a/src/com/onirica/carrousel/Configuration.java +++ b/src/com/onirica/carrousel/Configuration.java @@ -6,12 +6,20 @@ import android.app.Activity; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.ComponentName; +import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; +import android.view.View; +import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.LinearLayout; +import android.widget.TextView; public class Configuration extends ListActivity { private Results mResults; @@ -57,8 +65,82 @@ public class Configuration extends ListActivity { ArrayList matches = mResults.getMatches(); Match[] ms = new Match[matches.size()]; matches.toArray(ms); - ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_item, ms); - setListAdapter(adapter); - + MatchAdapter adapter = new MatchAdapter(ms); + setListAdapter(adapter); + } + + private class MatchView extends LinearLayout { + private TextView mTv; + private CheckBox mCb; + private CompoundButton.OnCheckedChangeListener mListener = null; + + public MatchView(Context context, String text) { + super(context); + this.setOrientation(HORIZONTAL); + mTv = new TextView(context); + mTv.setText(text); + mCb = new CheckBox(context); + mCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (mListener != null) { + mListener.onCheckedChanged(buttonView, isChecked); } + } + }); + + this.addView(mTv, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1)); + this.addView(mCb, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0)); + } + + public void setText(String text) { + mTv.setText(text); + } + + public void setOnMatchCheckedChanged(CompoundButton.OnCheckedChangeListener listener) { + mListener = listener; + } + } + private class MatchAdapter extends BaseAdapter { + private Match mMatches[]; + + public MatchAdapter(Match matches[]) { + super(); + mMatches = matches; + } + @Override + public int getCount() { + return mMatches.length; + } + + @Override + public Object getItem(int pos) { + return (Object)mMatches[pos]; + } + + @Override + public long getItemId(int pos) { + return pos; + } + public View getView(int pos, View convertView, ViewGroup parent) { + MatchView v; + if (convertView == null) { + v = new MatchView(parent.getContext(), mMatches[pos].toString()); + v.setOnMatchCheckedChanged(new OnMatchCheckedListener(pos)); + } else { + v = (MatchView)convertView; + v.setText(mMatches[pos].toString()); + } + return v; + } + private class OnMatchCheckedListener implements CompoundButton.OnCheckedChangeListener { + private int mPosition; + OnMatchCheckedListener(int position){ + mPosition = position; + } + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + // Do the real stuff here. + } + + } } } \ No newline at end of file