Ich habe eine benutzerdefinierte Liste, die zwei TextViews und zwei Buttons enthält. Ich möchte, dass eine Schaltfläche die in einer Textansicht angezeigten Daten ändert, und ich möchte, dass die andere Schaltfläche ein Dialogfeld aufbläht, das den Zweck dieser Zeile erläutert. Also muss ich den Dialoginhalt dynamisch aktualisieren. So weit ich weiß, ist die einzige Möglichkeit, einen klickbaren Button in eine Liste zu integrieren, den OnClickListener in einem Adapter zu setzen, wenn Sie die Zeile aufblähen, aber ich kann keinen Dialog außerhalb der Aktivität erstellen (ich bekomme einen Force Close) . Hier ist mein Aufruf getView(). Irgendwelche Vorschläge??Android: Aufrufen eines Dialogfelds über eine in einer Liste eingebettete Schaltfläche
Öffentlichkeit getView (final int Position, Ansicht convertView, Viewgroup parent) {
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;
}