2016-04-07 15 views
0

Ich habe ein Fragment, das ListFragment erweitert, die einen benutzerdefinierten Adapter verwendet.Schaltfläche Klicken für ListViewFragment

Jede Zeile der ListView hat eine Button und ich weiß, die in dem Verfahren Adapter

getView ich einen Hörer für die Schaltfläche festlegen können, wie folgt:

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

    ViewHolder viewHolder; //View lookup cached stored in tag. 
    if(convertView == null){ 
     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.pay_debit_credit_item, parent, false); 
     viewHolder.makePayment = (Button) convertView.findViewById(R.id.paymentButton); 
     viewHolder.makePayment.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getContext(), "Hellooo", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    //... 
    //Return view to be rendered. 
    return convertView; 
} 

der gut arbeitet, aber wie ich Benachrichtigen Sie das Fragment, das diesen Adapter verwendet, dass die Schaltfläche an Position x geklickt wurde?

+1

Sie sollten sich dies [Wie stelle ich eine Schnittstelle zwischen Fragment und Adapter?] (Http://stackoverflow.com/a/15444411/1893220) –

Antwort

2

erstellen zunächst eine Schnittstelle:

public interface IClickListener { 
    public void clicked(View view,int position); 
} 

dann instanziiert es in Ihrem Adapter-Klasse:

IClickListener clicListener; 
    public ListAdapterConstructor(Context context, Cursor c,IClickListener listener) { 
     super(context, c); 
     mContext = context; 
     this.clicListener = listener; 
    } 

in getView Verfahren setzen auf Click-Ereignis für die Schaltfläche:

viewHolder.button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       clicListener.clicked(v,po); 
       } 
     }); 

und Ändern Sie am besten Ihr Fragment, um den Ereignis-Listener zu implementieren:

public class YourFragment extends Fragment implements IClickListener { 
+0

ahh .. Ich habe Schnittstellen für Fragment zu verwenden Aktivitätswechselwirkungen, jedoch keine Verbindung zwischen den Punkten für die Verwendung von Schnittstellen für die Interaktion zwischen Adapter und Fragment. Vielen Dank! – Alan

Verwandte Themen