J'ai une liste personnalisée qui contient deux TextViews et deux boutons. Je veux un bouton pour changer les données montrées dans un TextView et je veux que l'autre bouton gonfle un dialogue expliquant le but de cette rangée. J'ai donc besoin de mettre à jour dynamiquement le contenu du dialogue. Autant que je sache, la seule façon d'insérer un bouton cliquable dans une liste est de setOnClickListener dans un adaptateur lorsque vous gonflez la ligne, mais je ne peux pas créer un dialogue en dehors de l'activité (je reçois un Close Force) . Voici mon appel getView(). Aucune suggestion??Android: Appel d'une boîte de dialogue à partir d'un bouton intégré dans une liste
publique Voir getView (position finale int, Vue parent convertView, ViewGroup) {
final ViewHolder holder;
if (convertView == null) {
convertView=mInflater.inflate(R.layout.text_list_item,null);
holder=new ViewHolder();
holder.clear=(Button)convertView.findViewById(R.id.btnClr);
holder.label=(TextView) convertView.findViewById(R.id.textListItemLabel);
holder.value=(TextView) convertView.findViewById(R.id.textListItemValue);
holder.info=(Button)convertView.findViewById(R.id.btnInfo);
holder.group= (RadioGroup)convertView.findViewById(R.id.radiogroup);
holder.r1=(RadioButton)convertView.findViewById(R.id.radio1);
holder.r2=(RadioButton)convertView.findViewById(R.id.radio2);
holder.t1=(ToggleButton)convertView.findViewById(R.id.toggle1);
holder.clear.setOnClickListener(new OnClickListener(){
private int pos= position;
@Override
public void onClick(View v){
holder.value.setText(String.valueOf(pos));
notifyDataSetChanged();//I know there's a problem on here, and I'm working on that... but at least it reacts to the button press.
}
});
holder.info.setOnClickListener(new OnClickListener(){
private int pos= position;
@Override
public void onClick(View v){
Button button = (Button) v;
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure you want to display?");
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create();//Ok to here...
builder.show();//Crash
String.valueOf(pos), Toast.LENGTH_SHORT).show();
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}