2017-08-02 3 views
0

Ich versuche, eine Schaltfläche als das letzte Element meiner RecyclerView hinzuzufügen. Ich habe schon ein paar Tutorials gesehen, aber ich kann es noch nicht herausfinden. Ich füge Artikel aus meiner Hauptklasse mit einer Array-Liste hinzu.RecyclerView fügen Sie eine Fußzeile hinzu

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { 

public Context context; 
private List<Archivos> mDataset; 

public MyAdapter(Context context, List<Archivos> myDataset) { 
    this.context = context; 
    this.mDataset = myDataset; 
} 

@Override 
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.card_item, parent, false); 
    Log.d("VIVZ", "onCreateHolder called"); 
    return new MyViewHolder(v); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    holder.mTextTitle.setText(mDataset.get(position).titulo); 
    holder.mTextDescription.setText(mDataset.get(position).descripcion); 
    holder.mTextType.setText(mDataset.get(position).type); 
    holder.mImageView.setImageDrawable(mDataset.get(position).icon); 
} 

@Override 
public int getItemCount() { 
    return mDataset.size(); 
} 

@Override 
public int getItemViewType(int position) { 
    return (position == mDataset.size()) ? R.layout.fr_signup : R.layout.card_item; 
} 

class MyViewHolder extends RecyclerView.ViewHolder implements RecyclerView.OnClickListener { 
    private CardView mCardView; 
    private TextView mTextTitle; 
    private TextView mTextDescription; 
    private TextView mTextType; 
    private ImageView mImageView; 

    private MyViewHolder(View v) { 
     super(v); 
     mCardView = v.findViewById(R.id.card_view); 
     mTextTitle = v.findViewById(R.id.card_doc_tittle); 
     mTextDescription = v.findViewById(R.id.card_doc_description); 
     mTextType = v.findViewById(R.id.card_doc_type); 
     mImageView = v.findViewById(R.id.iv_image); 
     mCardView.setOnClickListener(this); 
    } 

} 
+1

Mögliche Duplikat [RecyclerView Kopf- und Fußzeile] (https://stackoverflow.com/questions/26585941/recyclerview-header-and-footer) –

+0

@TimCastelijns können Sie mir helfen mit diesem Kommentar „Hallo XXX isHeader und isFooter sind keine Methoden, sie sind Variablen, die Sie in den Elementen Ihrer Liste haben. Zum Beispiel haben Sie eine Klasse namens MyItem und der Konstruktor ist public MyItem (Object myObject, boolean isHeader, boolean isFooter) " – JosCarrillo

Antwort

0

Im folgenden Code fügen Sie die zusätzliche Zeile auf die Schaltfläche in Ihrer recyclerview letzten Reihe, initialisieren Sie die Taste in viewholder als ususal Weise zu zeigen:

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    holder.mTextTitle.setText(mDataset.get(position).titulo); 
    holder.mTextDescription.setText(mDataset.get(position).descripcion); 
    holder.mTextType.setText(mDataset.get(position).type); 
    holder.mImageView.setImageDrawable(mDataset.get(position).icon); 
    //To show button only in last row 
    if(position = mDataset.size()-1) 
    { 
     holder.mButton.setText("OK"); 
    } 
} 
0

Ich habe Ihr Adapter bearbeitet eine Fußzeile enthalten Es ist nicht die vollständige Kopie + Paste-Lösung, aber es gibt ein paar TODO und Kommentare mit Hinweisen für Sie.

public class MyAdapter extends RecyclerView.Adapter { 

public Context context; 
private List<Archivos> mDataset; 

public MyAdapter(Context context, List<Archivos> myDataset) { 
    this.context = context; 
    this.mDataset = myDataset; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    if(viewType == R.layout.card_item){ 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.card_item, parent, false); 
     Log.d("VIVZ", "onCreateHolder called"); 
     return new MyViewHolder(v); 
    } else{ 
     // TODO: create here a holder for the Footer, inflate fr_signup and return it 
     Log.d("VIVZ", "onCreateFooterHolder called"); 
    } 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    if(getItemViewType(position) == R.layout.card_item){ 
     MyViewHolder h = (MyViewHolder) holder; 
     h.mTextTitle.setText(mDataset.get(position).titulo); 
     h.mTextDescription.setText(mDataset.get(position).descripcion); 
     h.mTextType.setText(mDataset.get(position).type); 
     h.mImageView.setImageDrawable(mDataset.get(position).icon); 
    } else { 
     // TODO: cast holder to the ViewHolder that of the footer and set any values needed 
    } 
} 

@Override 
public int getItemCount() { 
    return mDataset.size() + 1; // added here +1 for the footer 
} 

@Override 
public int getItemViewType(int position) { 
    return (position == mDataset.size()) ? R.layout.fr_signup : R.layout.card_item; 
} 

class MyViewHolder extends RecyclerView.ViewHolder implements RecyclerView.OnClickListener { 
    private CardView mCardView; 
    private TextView mTextTitle; 
    private TextView mTextDescription; 
    private TextView mTextType; 
    private ImageView mImageView; 

    private MyViewHolder(View v) { 
     super(v); 
     mCardView = v.findViewById(R.id.card_view); 
     mTextTitle = v.findViewById(R.id.card_doc_tittle); 
     mTextDescription = v.findViewById(R.id.card_doc_description); 
     mTextType = v.findViewById(R.id.card_doc_type); 
     mImageView = v.findViewById(R.id.iv_image); 
     mCardView.setOnClickListener(this); 
    } 

} 
Verwandte Themen