Skip to content

Commit

Permalink
recreated the unsplash tags with recyclerview - fixed the search and …
Browse files Browse the repository at this point in the history
…fragment navigation in unsplash fragment
  • Loading branch information
medyas committed Jan 16, 2019
1 parent 4f5cb64 commit 2dd72fc
Show file tree
Hide file tree
Showing 16 changed files with 261 additions and 119 deletions.
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>

</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
package ml.medyas.wallbay.adapters.unsplash;

import android.arch.paging.PagedListAdapter;
import android.content.Context;
import android.databinding.DataBindingUtil;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

import ml.medyas.wallbay.R;
import ml.medyas.wallbay.databinding.CollectionItemLayoutBinding;
import ml.medyas.wallbay.entities.CollectionEntity;
import ml.medyas.wallbay.entities.unsplash.Tag;

import static ml.medyas.wallbay.entities.CollectionEntity.DIFF_CALLBACK;

public class CollectionRecyclerViewAdapter extends PagedListAdapter<CollectionEntity, CollectionRecyclerViewAdapter.CollectionViewHolder> {
private CollectionInterface mListener;
private TagsRecyclerViewAdapter.OnTagItemClicked tagListener;
private Context context;

public CollectionRecyclerViewAdapter(CollectionInterface listener) {
public CollectionRecyclerViewAdapter(CollectionInterface listener, TagsRecyclerViewAdapter.OnTagItemClicked tagListener, Context context) {
super(DIFF_CALLBACK);
this.mListener = listener;
this.tagListener = tagListener;
this.context = context;
}

public interface CollectionInterface {
Expand All @@ -44,6 +54,18 @@ public void onClick(View view) {
mListener.onCollectionItemClicked(getItem(holder.getAdapterPosition()));
}
});

if(getItem(i).getTags() != null) {
List<String> list = new ArrayList<>();
for (Tag tag : getItem(i).getTags()) {
list.add(tag.getTitle());
}
TagsRecyclerViewAdapter mAdapter = new TagsRecyclerViewAdapter(list, tagListener);
holder.itemLayoutBinding.collectionTags.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
holder.itemLayoutBinding.collectionTags.setHasFixedSize(true);
holder.itemLayoutBinding.collectionTags.setAdapter(mAdapter);

}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package ml.medyas.wallbay.adapters.unsplash;

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

import java.util.List;

import ml.medyas.wallbay.R;

public class TagsRecyclerViewAdapter extends RecyclerView.Adapter<TagsRecyclerViewAdapter.TagsRecyclerViewViewHolder> {
private List<String> items;
private OnTagItemClicked mListener;

public interface OnTagItemClicked {
void onTagItemClicked(String query);
}

public TagsRecyclerViewAdapter(List<String> items, OnTagItemClicked mListener) {
this.items = items;
this.mListener = mListener;
}

@Override
public TagsRecyclerViewViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.tags_layout_item, parent, false);
return new TagsRecyclerViewViewHolder(v);
}

@Override
public void onBindViewHolder(TagsRecyclerViewViewHolder holder, int position) {
final String item = items.get(position);

holder.itemTag.setText(item);
holder.itemTag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onTagItemClicked(item);
}
});

}

@Override
public int getItemCount() {
if (items == null) {
return 0;
}
return items.size();
}

public class TagsRecyclerViewViewHolder extends RecyclerView.ViewHolder {
private TextView itemTag;

public TagsRecyclerViewViewHolder(View itemView) {
super(itemView);

itemTag = itemView.findViewById(R.id.item_tag);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,12 @@

import android.arch.persistence.room.Ignore;
import android.databinding.BindingAdapter;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v7.util.DiffUtil;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

Expand Down Expand Up @@ -70,6 +65,7 @@ public static void setTotalPhotosNumber(TextView text, int number) {
text.setText(String.format("%d\nPhotos", number));
}

/*
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@BindingAdapter({"android:load_tags"})
public static void setTags(LinearLayout view, List<Tag> tags) {
Expand All @@ -93,7 +89,7 @@ public void onClick(View view) {
view.addView(textView);
}
}
}
}*/


public CollectionEntity() {
Expand Down
61 changes: 51 additions & 10 deletions app/src/main/java/ml/medyas/wallbay/ui/activities/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewCompat;
import android.support.v7.app.AppCompatActivity;
import android.transition.TransitionInflater;
import android.view.Gravity;
Expand Down Expand Up @@ -47,10 +49,12 @@ public class MainActivity extends AppCompatActivity implements GetStartedFragmen
public static final String FIRST_START = "first_start";
public static final String TOOLBAR_VISIBILITY = "toolbar_visibility";
public static final String FAVORITE_SHOWN = "FAVORITE_SHOWN";
public static final String FRAGMENT_STACK = "FRAGMENT_STACK";

private ActivityMainBinding binding;
private FavoriteViewModel favoriteViewModel;
private boolean addedFragmentShown = false;
private int fragmentStack = 0;

//TODO 1: Create fragments UI : For You
//• Pixabay
Expand Down Expand Up @@ -82,6 +86,7 @@ protected void onCreate(Bundle savedInstanceState) {
binding.content.coordinator.setVisibility(View.VISIBLE);
showToolbar(savedInstanceState.getBoolean(TOOLBAR_VISIBILITY));
setUpToolbar(!savedInstanceState.getBoolean(FAVORITE_SHOWN));
fragmentStack = savedInstanceState.getInt(FRAGMENT_STACK);
}

binding.navigation.setOnInflateListener(new ViewStub.OnInflateListener() {
Expand All @@ -105,7 +110,6 @@ protected void onResume() {
private void setUpToolbar(final boolean setup) {
if (setup) {
addedFragmentShown = false;
//getSupportActionBar().setTitle(getString(R.string.app_name));
binding.content.toolbar.setNavigationIcon(R.drawable.ic_menu_black_24dp);
binding.content.toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
Expand All @@ -121,7 +125,6 @@ public void onClick(View view) {
@Override
public void onClick(View view) {
onBackPressed();
setUpToolbar(true);
}
});
}
Expand All @@ -142,21 +145,46 @@ protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(TOOLBAR_VISIBILITY, binding.content.toolbar.getVisibility() == View.VISIBLE);
outState.putBoolean(FAVORITE_SHOWN, addedFragmentShown);

if(fragmentStack < 0)
fragmentStack = 0;
outState.putInt(FRAGMENT_STACK, fragmentStack);
}

@Override
public void onBackPressed() {
String fragment = getSupportFragmentManager().findFragmentById(R.id.main_container).getClass().getName();
if (fragment.equals(ImageDetailsFragment.TAG)) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
String className = fragment.getClass().getName();

super.onBackPressed();
fragmentStack-=1;

if (className.equals(ImageDetailsFragment.TAG)) {
showToolbar(true);
} else if (fragment.equals(FavoriteFragment.TAG) ||
fragment.equals(PixabayViewPagerFragment.TAG) ||
fragment.equals(UnsplashDefaultVPFragment.TAG) ) {
setUpToolbar(addedFragmentShown);
binding.content.toolbar.inflateMenu(R.menu.main_activity_menu);
} else if (className.equals(FavoriteFragment.TAG) ||
className.equals(PixabayViewPagerFragment.TAG) ||
className.equals(UnsplashDefaultVPFragment.TAG) ) {
if(fragmentStack == 0) {
setUpToolbar(addedFragmentShown);
}
}

super.onBackPressed();

new Handler().postDelayed(new Runnable() {

@Override
public void run() {
Fragment frag = getSupportFragmentManager().findFragmentById(R.id.main_container);
setToolbarElevation(frag);
if(frag instanceof PixabayFragment || frag instanceof UnsplashFragment || frag instanceof PexelsFragment) {
binding.content.toolbar.inflateMenu(R.menu.search_menu);
setUpToolbar(true);
} else if(frag instanceof SearchFragment || frag instanceof ForYouFragment || frag instanceof AboutFragment){
binding.content.toolbar.inflateMenu(R.menu.main_activity_menu);
setUpToolbar(true);
}
}
}, 10);
}

private void findToolbarTitle() {
Expand Down Expand Up @@ -197,6 +225,14 @@ private String getToolbarTitle( String name) {
return "";
}

private void setToolbarElevation(Fragment fragment) {
if(fragment instanceof PixabayFragment || fragment instanceof UnsplashFragment || fragment instanceof PexelsFragment || fragment instanceof SearchFragment) {
ViewCompat.setElevation(binding.content.appBar, 0);
} else {
ViewCompat.setElevation(binding.content.appBar, 4 * getResources().getDisplayMetrics().density);
}
}

private void showStartFragment() {
getSupportFragmentManager().beginTransaction()
.replace(R.id.start_container, GetStartedFragment.newInstance())
Expand All @@ -215,6 +251,8 @@ private void replaceFragment(Fragment fragment, boolean replace) {
.commit();

}

setToolbarElevation(fragment);
}

public void onNavItemClicked(View view) {
Expand Down Expand Up @@ -313,10 +351,13 @@ public void onAddFragment(Fragment fragment) {
.commit();
addedFragmentShown = true;
setUpToolbar(false);
fragmentStack+=1;

if(fragment instanceof FavoriteFragment) {
getSupportActionBar().setTitle(getString(R.string.favorite));
}

setToolbarElevation(fragment);
}

@Override
Expand Down
Loading

0 comments on commit 2dd72fc

Please sign in to comment.