2017-02-09 3 views
0

In meinem Programm habe ich ein Fragment, das dynamisch benutzerdefinierte Elemente zu einem ListView hinzugefügt. Diese Gegenstände haben jeweils 2 Knöpfe, die eine bestimmte Funktionalität haben sollen (wie das Entfernen des bestimmten Gegenstandes von der Liste). Ich möchte einen OnClickListener für sie festlegen und eine Funktion innerhalb meiner Fragmentklasse aufrufen.onClickListener für benutzerdefinierte ListView Element mit mehreren Schaltflächen

Einfache XML-onClick-Attribute können die Funktion nicht finden und wenn ich versuche, den onClickListener innerhalb der onCreateView() -Methode (wie mit Listeners für statische Buttons) hinzuzufügen. Wenn das Fragment erstellt wird, wird jedoch eine NullPointerException aufgerufen, da die referenzierten Schaltflächen nicht Teil des Fragments (?) Sind.

Wie kann ich eine Funktion von meinem Fragment aufrufen, nachdem ich einen dynamisch hinzugefügten Button (oder Checkbox) gedrückt habe?

+0

ein Element in Listenansicht mit zwei Tasten? funktioniert nicht klicken? – marlonpya

Antwort

0

dies ist einfacher, wenn Sie einen Code

In meinem Code schreiben habe ich etwas ähnliches habe ich eine Listenansicht mit einem Array-Adapter, und in einem gewissen Linie habe ich ein Image mit einem funtion.

Ich löse mein Problem mit einer Klasse, um an meinem Adapter zu arbeiten, und dass ich die Funktion auf den Button anwende.

Main_Class Code:

ListViewResources listViewResources = new ListViewResources(this, resourcesName); 
listView = (ListView) popupView.findViewById(R.id.listView1); 
listView.setAdapter(listViewResources); 

ListViewResouces_Class:

public class ListViewResources extends ArrayAdapter<String>{ 

Activity context; 
String[] resourcesName; 


public ListViewResources(Activity context, String[] resourcesName) { 
    super(context, R.layout.popup_listitem_resources, resourcesName); 

    this.context = context; 
    this.resourcesName = resourcesName; 

} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 

    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView = inflater.inflate(R.layout.popup_listitem_resources, null, true); 

    TextView resourceName = (TextView)rowView.findViewById(R.id.textViewResourceName); 
    ImageView openResource = (ImageView)rowView.findViewById(R.id.buttonOpenResource); 

    openResource.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //code for happen on Button Click 
     } 
    }); 

    resourceName.setText(resourcesName[position]); 

    return rowView; 
} 
Verwandte Themen