Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

set random positions for headers #25

Closed
mhemdan opened this issue Sep 12, 2015 · 2 comments
Closed

set random positions for headers #25

mhemdan opened this issue Sep 12, 2015 · 2 comments

Comments

@mhemdan
Copy link

mhemdan commented Sep 12, 2015

how to set different positions for headers like set one header at position 10 and the second one on 13 and so on ? thanks

@mhemdan mhemdan closed this as completed Sep 12, 2015
@maiconpeixinho
Copy link

Hey man .. how do you did this? Can you help me please?

@mhemdan
Copy link
Author

mhemdan commented May 27, 2016

Here is my adapter code which is wrapped with the sticky Decor hope it helps

`import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.ArrayList;

import ca.barrenechea.widget.recyclerview.decoration.StickyHeaderAdapter;

/**

  • Created by mohammed on 9/12/15.
    */
    public class StickyNumbersHeader extends RecyclerView.Adapter<StickyNumbersHeader.ViewHolder> implements
    StickyHeaderAdapter<StickyNumbersHeader.HeaderHolder> {

    private Context context;
    private LayoutInflater mInflater;
    private ArrayList items ;
    private Integer[] mHeaderPositions = {0, 3, 8, 12, 31, 32, 53, 54,55,69,71,82};
    public StickyNumbersHeader(Context context) {
    mInflater = LayoutInflater.from(context);
    this.context = context;
    }

    public void insertItems(ArrayList phoneNumbersArrayList){
    this.items = phoneNumbersArrayList;
    }
    @OverRide
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    final View view = mInflater.inflate(R.layout.phone_item, parent, false);

    return new ViewHolder(view);
    

    }

    @OverRide
    public void onBindViewHolder(ViewHolder holder, final int position) {
    holder.number.setText(items.get(position).getNumber());
    holder.title.setText(items.get(position).getTitle());
    holder.itemContainer.setOnClickListener(new View.OnClickListener() {
    @OverRide
    public void onClick(View view) {
    openDial(items.get(position).getNumber());
    }
    });
    }

    @OverRide
    public int getItemCount() {
    return items.size();
    }

    @OverRide
    public long getHeaderId(int position) {
    if(position<=2){
    return mHeaderPositions[0];
    }else if(position<=7){
    return mHeaderPositions[1];
    }else if(position<=11){
    return mHeaderPositions[2];
    }else if(position<=30){
    return mHeaderPositions[3];
    }else if(position==31){
    return mHeaderPositions[4];
    }else if(position<=52){
    return mHeaderPositions[5];
    }else if(position==53){
    return mHeaderPositions[6];
    }else if(position==54){
    return mHeaderPositions[7];
    }else if(position<=68){
    return mHeaderPositions[8];
    }else if(position<=70){
    return mHeaderPositions[9];
    }else if(position<=81){
    return mHeaderPositions[10];
    }else{
    return mHeaderPositions[11];
    }
    }

    @OverRide
    public HeaderHolder onCreateHeaderViewHolder(ViewGroup parent) {
    final View view = mInflater.inflate(R.layout.header_phone, parent, false);
    return new HeaderHolder(view);
    }

    @OverRide
    public void onBindHeaderViewHolder(HeaderHolder viewholder, int position) {
    viewholder.header.setText(items.get(position).getCategory());
    }

    static class HeaderHolder extends RecyclerView.ViewHolder {
    public TextView header;

    public HeaderHolder(View itemView) {
        super(itemView);
    
        header = (TextView) itemView;
    }
    

    }

    static class ViewHolder extends RecyclerView.ViewHolder {
    public TextView title,number;
    public LinearLayout itemContainer;
    public ViewHolder(View itemView) {
    super(itemView);

        title = (TextView) itemView.findViewById(R.id.phone_number_tile);
        number = (TextView) itemView.findViewById(R.id.phone_number);
        itemContainer = (LinearLayout) itemView.findViewById(R.id.item_container);
    }
    

    }
    public void openDial(String phoneNumber){
    Intent intent = new Intent(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:" + phoneNumber));
    this.context.startActivity(intent);
    }

}`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants