2016-04-07 22 views
0

için tıklayın Özel bir Bağdaştırıcı kullanan ListFragment öğesini genişleten bir Parçam var.Düğme ListViewFragment

ListView her satırı bir Button vardır ve ben şöyle ben düğmesi için bir dinleyici ayarlayabilirsiniz Adapter

getView yönteminde biliyoruz: gayet iyi çalışıyor, ama nasıl

@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; 
} 

I do Bu bağdaştırıcıyı kullanan Parçayı, x konumundaki düğmenin tıklandığını bildirir misiniz? Sonra

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

adaptör sınıfında örnekleriz::

+1

Buna bir göz atmalısınız [Parça ve bağdaştırıcı arasında arabirim nasıl oluşturulur?] (Http://stackoverflow.com/a/15444411/1893220) –

cevap

2

ilk bir arayüz oluşturmak

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

ve en: düğmesi için tıklama etkinliğinde ayarlanan GetView yönteminde

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

olay dinleyicisini uygulamak için en az parçanızı değiştirin:

public class YourFragment extends Fragment implements IClickListener { 
+0

ahh .. Fragment için arabirimler kullanıyorum Etkinlik etkileşimleri, ancak Bağdaştırıcıya Fragman etkileşimi için arabirimleri kullanmak için noktaları birleştirmedi. Teşekkür ederim! – Alan