2016-04-01 16 views
2

Bir yardıma ihtiyacım var, geri dönüşümün bir parçası var ve geri dönüşümün içinde görününBir düğme var.Bağdaştırıcıdan bir parçanın içindeki yöntemi çağırmak için nasıl bağdaştırılır Android

yüzden sadece böyle diyoruz zaten taban parçasının bildirilen iletişim kutusunu açmak gerekir tıklamadan sonra düğme "OpenDialog (DIALOG_CHECK);"

Şimdi ben çağırabilir nasıl benim adaptör üzerinde iletişim zaten bir yöntem yapmak fragmanı ve adaptörden diyoruz ve bir hata "Java lang boş gösterici" make

Bu benim kodudur:

DeliveryFragment delivFrag = new DeliveryFragment(); 
holder.editButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       delivFrag.doEdit(); 
      } 
     }); 

ve fragmanında

public void doEdit(){ 
     openDialog(DIALOG_EDIT_ITEM); 
    } 
+0

Bağdaştırıcı sınıfında bir arabirim oluşturmak için, şimdi, bu arabirimi init init adaptörünün içinde aynı anda başlattığınız ve doEdit yönteminizi çağırdığınızda, onClickHandler (Görünüm v) yöntemine sahip olan buttonClickHandler arabirimini çağırın. – dex

+0

kopyası https://stackoverflow.com/questions/24502394/call-a-fragment-method-from-an-adapter –

cevap

1

Bağdaştırıcı sınıfınızda bir arabirim yazmanız ve parçanızdaki bağdaştırıcınızı aradığınız yerden bu işlevselliği uygulamanız gerekir.

Öğe tıklama eylemi ile geri dönüştürücü görünümü için örnek uygulama. Size yardımcı olabileceğini bir kez kontrol edin. https://www.dropbox.com/s/2q1ywnehz454axw/SamplePro_Recycler.zip?dl=0

3

Daha iyi anlaşılması için basit bir örnek. Bir arayüz kullan.

public class TestAdapter extends RecyclerView.Adapter<TestAdapter.ViewHolder> { 

    private static OnItemClickListener mOnItemClickLister; 

    public interface OnItemClickListener { 
    void onItemClicked(View view, int pos); 
    } 

    public void setOnItemClickListener(OnItemClickListener listener) { 

    mOnItemClickLister = listener; 
    } 

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    Button mBtnTest; 
    Context mContext; 

    //We also create a constructor that accepts the entire item row 
    //and does the view lookups to find each subview. 
    public ViewHolder(Context context, View itemView) { 

     //Stores the itemView in a public final member variable that can be used 
     //to access the context from any ViewHolder Instance 
     super(itemView); 

     mContext = context; 
     mBtnTest = (Button) itemView.findViewById(R.id.message_button); 
     itemView.setOnClickListener(this); 
    } 

    @Override public void onClick(View v) { 
     int position = v.getLayoutDirection(); 
     mOnItemClickLister.onItemClicked(v, position); 
    } 
    } 
} 

     //Fragment Part 

class FragmentTest extends Fragment implements OnItemClickListener { 

    TestAdapter adapter = new TestAdapter(); //you can initialize according to your logic 

    //set the fragment as a listener to adapter 
    this.adapter.setOnItemClickListener(onItemClickListener); 

    public void onItemClicked(View view, int pos) { 
    //do whatever you want here... 
    } 
} 
0

Sen Adaptörü kurucusuna içinde Fragment Örneği gönderebilir ve sonra o fragmanda yöntemini çağırmak için bu örneği kullanabilirsiniz.

public MyCartRecycleAdapter(Context context, List<CartData> list, MyFragmentNew myFragmentNew) { 
    this.list = list; 
    this.mContext = (Activity) context; 
    this.myFragmentNew = myFragmentNew; 
} 

ve sonra

myFragmentNew.MethodName(); 
+0

Yapıcı yerine onBindViewholder yöntemini nasıl çağırılır? –

0

Güncelleme adaptör yapıcı bir parametre olarak Fragment kabul etmek.

customAdapter = new CustomAdapter(myContext, android.R.layout.simple_list_item_1, getList, HomeFragment.this); 

Adaptör Sınıf:

public CustomAdapter(Context context, int id, HomeFragment fragment) { 
    this.fragment = fragment; 
} 

fragment.doSomething();

İlgili konular