1
0
mirror of https://github.com/balkian/Carrousel-Android.git synced 2024-12-22 21:18:13 +00:00

I9: Checkboxes y Adapter propio

This commit is contained in:
Fernando Herrera 2011-03-10 00:33:46 +01:00
parent 4bb85fb0de
commit ee90d55080
2 changed files with 91 additions and 3 deletions

6
res/layout/list_item.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</TextView>

View File

@ -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<Match> matches = mResults.getMatches();
Match[] ms = new Match[matches.size()];
matches.toArray(ms);
ArrayAdapter<Match> adapter = new ArrayAdapter<Match>(this, R.layout.list_item, ms);
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.
}
}
}
}