Ne peut pas définir de OnCheckedChangeListener à une Case à cocher
Je suis en train de mettre un OnCheckedChangeListener
à un CheckBox
mais mon application se ferme au moment de l'exécution. J'ai aussi essayé de mettre des écouteurs pour mon TextView
et j'obtiens toujours le même résultat. Quelqu'un peut-il aider?
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ListViewActivity extends ListActivity implements OnCheckedChangeListener {
TextView label;
CheckBox checkBox;
public class MyCustomAdapter extends ArrayAdapter<String> {
public MyCustomAdapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
//TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//TODO Auto-generated method stub
//return super.getView(position, convertView, parent);
View row = convertView;
if(row==null){
LayoutInflater inflater=getLayoutInflater();
row=inflater.inflate(R.layout.main, parent, false);
}
label=(TextView)row.findViewById(R.id.weekofday);
label.setText(month[position]);
checkBox=(CheckBox)row.findViewById(R.id.checkBox);
return row;
}
}
String[] month = {
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
/*setListAdapter(new ArrayAdapter<String>(this,
R.layout.row, R.id.weekofday, DayOfWeek));*/
setListAdapter(new MyCustomAdapter(ListViewActivity.this, R.layout.main, month));
checkBox.setOnCheckedChangeListener(this); //my application exits here!!!!
}
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
//TODO Auto-generated method stub
//Toast.makeText(getApplicationContext(), "box checked", Toast.LENGTH_LONG);
}
}
OriginalL'auteur Traveling Salesman | 2012-04-07
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas définir le port d'écoute de votre
CheckBox
de laListView
comme ça(il sera probablement jeter unNullPointerException
), au lieu de définir l'auditeur dans legetView()
méthode(vous aurez également à maintenir laCheckBox
statut de sorte que vous ne finissent pas avec d'étranges lignes d'état). Soufflet est un exemple:Pour la
TextView
que vous aurez à faire la même chose.OriginalL'auteur Luksprog
Mettre en œuvre Case port d'écoute de votre classe, de cette façon, surtout si vous avez plus d'une Case à traiter, vous pouvez gérer en change la casse des blocs et rend votre code plus lisible:
Dans votre onCreate() méthode de mettre ceci:
Listern pour votre case à cocher afficher événement comme celui-ci:
OriginalL'auteur S bruce