Skip to content

Commit

Permalink
added section with line
Browse files Browse the repository at this point in the history
  • Loading branch information
JavierGonzal committed Aug 8, 2017
1 parent 2214ea2 commit 86e3631
Show file tree
Hide file tree
Showing 12 changed files with 419 additions and 8 deletions.
2 changes: 2 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions app/build.gradle
Expand Up @@ -2,12 +2,12 @@ apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
compileSdkVersion 24
buildToolsVersion '25.0.0'
compileSdkVersion 25
buildToolsVersion '25.0.1'
defaultConfig {
applicationId "com.thedeveloperworldisyours.fullrecycleview"
minSdkVersion 16
targetSdkVersion 24
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Expand Down Expand Up @@ -54,10 +54,10 @@ dependencies {
})


compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:design:25.0.1'
compile 'com.android.support:support-v4:25.0.1'
testCompile 'junit:junit:4.12'

//swipe
Expand Down
Expand Up @@ -16,6 +16,7 @@
import com.thedeveloperworldisyours.fullrecycleview.indexed.IndexedFragment;
import com.thedeveloperworldisyours.fullrecycleview.multiple.MultipleFragment;
import com.thedeveloperworldisyours.fullrecycleview.sections.SectionFragment;
import com.thedeveloperworldisyours.fullrecycleview.sectionwithline.SectionWithLineFragment;
import com.thedeveloperworldisyours.fullrecycleview.single.SingleFragment;
import com.thedeveloperworldisyours.fullrecycleview.snap.SnapFragment;
import com.thedeveloperworldisyours.fullrecycleview.swipe.SwipeListFragment;
Expand Down Expand Up @@ -113,6 +114,10 @@ public boolean onOptionsItemSelected(MenuItem item) {
mFragment = AddFavoritesFragment.newInstance();
break;

case R.id.main_menu_section_with_line:
mFragment = SectionWithLineFragment.newInstance();
break;

default:
return super.onOptionsItemSelected(item);
}
Expand Down
@@ -0,0 +1,45 @@
package com.thedeveloperworldisyours.fullrecycleview.sectionwithline;

/**
* Created by javierg on 08/08/2017.
*/

public class ElementList {

private String mName;
boolean mSection;
boolean mNextSection;


public ElementList(String name, boolean section, boolean nextSection) {
this.mName = name;
this.mSection = section;
this.mNextSection = nextSection;
}

public boolean isSection() {
return mSection;
}

public void setSection(boolean mSection) {
this.mSection = mSection;
}

public String getName() {
return mName;
}

public void setName(String name) {
this.mName = name;
}

public boolean ismNextSection() {
return mNextSection;
}

public void setmNextSection(boolean mNextSection) {
this.mNextSection = mNextSection;
}

}

@@ -0,0 +1,162 @@
package com.thedeveloperworldisyours.fullrecycleview.sectionwithline;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SectionIndexer;
import android.widget.TextView;

import com.thedeveloperworldisyours.fullrecycleview.R;

import java.util.HashMap;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
* Created by javierg on 08/08/2017.
*/

public class SectionWithLineAdapter extends RecyclerView
.Adapter<RecyclerView.ViewHolder> implements SectionIndexer {

HashMap<String, Integer> mMapIndex;
String[] mSections;
public static final int ITEM_FINAL = 0;
public static final int ITEM = 1;
public static final int SECTION = 2;
private Context mContext;
private List<ElementList> mList;
private static SectionWithLineAdapter.MyClickListener sClickListener;
// Allows to remember the last item shown on screen
private int mLastPositionSection = -1;

@Override
public Object[] getSections() {
return mSections;
}

@Override
public int getPositionForSection(int i) {
return mMapIndex.get(mSections[i]);
}

@Override
public int getSectionForPosition(int i) {
return 0;
}

static class SectionHolder extends RecyclerView.ViewHolder {
@BindView(R.id.section_with_line_list_item_header_text)
TextView mTextViewSection;

SectionHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}

static class DataObjectHolder extends RecyclerView.ViewHolder
implements View
.OnClickListener {
@BindView(R.id.section_with_line_list_item_name)
TextView mName;

@BindView(R.id.section_with_line_list_item_view)
View mView;

DataObjectHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
mName.setOnClickListener(this);
}

@Override
public void onClick(View v) {

}
}

public void setOnItemClickListener(SectionWithLineAdapter.MyClickListener myClickListener) {
this.sClickListener = myClickListener;
}

public SectionWithLineAdapter(Context context, List<ElementList> list, String[] sections, HashMap<String, Integer> mapIndex) {
mContext = context;
mList = list;
mSections = sections;
mMapIndex = mapIndex;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.section_with_line_list_item, parent, false);

View viewSection = LayoutInflater.from(parent.getContext())
.inflate(R.layout.section_with_lien_list_item_header, parent, false);

switch (viewType) {
case ITEM_FINAL:
case ITEM:
return new SectionWithLineAdapter.DataObjectHolder(view);
case SECTION:
return new SectionWithLineAdapter.SectionHolder(viewSection);
default:
return new SectionWithLineAdapter.SectionHolder(viewSection);
}
}

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

case ITEM:
SectionWithLineAdapter.DataObjectHolder dataObjectHolder = (SectionWithLineAdapter.DataObjectHolder) holder;
dataObjectHolder.mName.setText(mList.get(position).getName());
break;

case ITEM_FINAL:
SectionWithLineAdapter.DataObjectHolder dataObjectHolderFinal = (SectionWithLineAdapter.DataObjectHolder) holder;
dataObjectHolderFinal.mName.setText(mList.get(position).getName());
dataObjectHolderFinal.mView.setVisibility(View.GONE);
break;
case SECTION:
SectionWithLineAdapter.SectionHolder sectionHolder = (SectionWithLineAdapter.SectionHolder) holder;
sectionHolder.mTextViewSection.setText(mList.get(position).getName());
mLastPositionSection = position;
break;
}
}

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

public void refreshData(List<ElementList> dataset) {
mList.clear();
mList.addAll(dataset);
notifyDataSetChanged();
}

interface MyClickListener {
void onItemClick(int position, boolean addItem);
}

@Override
public int getItemViewType(int position) {
if (mList.get(position).isSection()) {
return SECTION;
} else {
if (mList.get(position).ismNextSection()) {
return ITEM_FINAL;
} else {
return ITEM;
}
}
}
}

0 comments on commit 86e3631

Please sign in to comment.