From c1e20934e432d0da671549af3f70717cc8614d34 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Sun, 16 Dec 2018 22:44:00 +0100 Subject: [PATCH] recycle view crash --- app/src/main/AndroidManifest.xml | 24 +-- .../findmytutor/activity/BaseActivity.java | 4 +- .../wmi/findmytutor/activity/BlackList.java | 164 ++++++++++++++++++ .../wmi/findmytutor/activity/SpecialList.java | 19 ++ .../adapters/BlackListAdapter.java | 56 ++++++ .../adapters/TutorsListAdapter.java | 2 +- .../main/res/layout/activity_black_list.xml | 97 +++++++++++ app/src/main/res/layout/black_list_row.xml | 49 ++++++ .../main/res/layout/content_black_list.xml | 40 +++++ .../main/res/menu/activity_main_drawer.xml | 4 +- app/src/main/res/menu/menu_black_list.xml | 10 ++ app/src/main/res/values/dimens.xml | 2 + app/src/main/res/values/strings.xml | 90 ++++++++++ app/src/main/res/values/styles.xml | 1 + 14 files changed, 547 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/activity/SpecialList.java create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/adapters/BlackListAdapter.java create mode 100644 app/src/main/res/layout/activity_black_list.xml create mode 100644 app/src/main/res/layout/black_list_row.xml create mode 100644 app/src/main/res/layout/content_black_list.xml create mode 100644 app/src/main/res/menu/menu_black_list.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5ccbfb9..adb9588 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,10 +27,10 @@ tools:ignore="AllowBackup,GoogleAppIndexingWarning"> + android:theme="@style/AppTheme.NoActionBar"> @@ -39,20 +39,20 @@ + android:screenOrientation="portrait" /> + android:screenOrientation="portrait" /> + android:configChanges="keyboardHidden|orientation|screenSize" + android:screenOrientation="portrait" /> + android:theme="@style/AppTheme" /> + \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java index f616148..b9b0bc3 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java @@ -99,8 +99,8 @@ public abstract class BaseActivity /* launchIntent = new Intent(getApplicationContext(), WhitelistActivity.class); startActivity(launchIntent);*/ } else if (itemName.equals(getResources().getString(R.string.navigation_item_blacklist))) { - /* launchIntent = new Intent(getApplicationContext(), BlacklistActivity.class); - startActivity(launchIntent);*/ + launchIntent = new Intent(getApplicationContext(),BlackList.class); + startActivity(launchIntent); } else if (itemName.equals(getResources().getString(R.string.navigation_item_profile))) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java new file mode 100644 index 0000000..b1257ec --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java @@ -0,0 +1,164 @@ +package com.uam.wmi.findmytutor.activity; + +import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.design.widget.Snackbar; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; +import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.adapters.BlackListAdapter; +import com.uam.wmi.findmytutor.model.User; +import com.uam.wmi.findmytutor.network.ApiClient; +import com.uam.wmi.findmytutor.service.UserService; +import com.uam.wmi.findmytutor.utils.MyDividerItemDecoration; +import com.uam.wmi.findmytutor.utils.PrefUtils; +import com.uam.wmi.findmytutor.utils.RecyclerTouchListener; +import com.uam.wmi.findmytutor.utils.RestApiHelper; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.observers.DisposableSingleObserver; +import io.reactivex.schedulers.Schedulers; +import okhttp3.ResponseBody; + +import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; + +public class BlackList extends AppCompatActivity { + + private CompositeDisposable disposable = new CompositeDisposable(); + private UserService userService; + + @BindView(R.id.black_list_empty_text_view) + TextView noNotesView; + @BindView(R.id.black_list_recycler_view) + RecyclerView mRecyclerView; + private BlackListAdapter mAdapter; + + private List blackList = new ArrayList<>(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_black_list); + + // Custom Toolbar + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + ActionBar actionBar = getSupportActionBar(); + actionBar.setDisplayShowTitleEnabled(true); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setHomeButtonEnabled(true); + + FloatingActionButton fab = findViewById(R.id.fab); + fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show()); + + userService = ApiClient.getClient(getApplicationContext()) + .create(UserService.class); + + // Adapter + mAdapter = new BlackListAdapter(this, blackList); + RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this); + mRecyclerView.setLayoutManager(mLayoutManager); + mRecyclerView.setItemAnimator(new DefaultItemAnimator()); + mRecyclerView.addItemDecoration(new MyDividerItemDecoration(this, LinearLayoutManager.VERTICAL, 16)); + mRecyclerView.setAdapter(mAdapter); + + //TODO API CALL HERE + + fetchBlackListedUsers(PrefUtils.getUserId(this)); + +// mAdapter = new BlackListAdapter(); + + mRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(this, mRecyclerView, new RecyclerTouchListener.ClickListener() { + @Override + public void onClick(View view, int position) { + Toast.makeText(getApplicationContext(), "OnClick", Toast.LENGTH_LONG); + } + + @Override + public void onLongClick(View view, int position) { + Toast.makeText(getApplicationContext(), "OnLongClick", Toast.LENGTH_LONG); + } + })); + + } + + + private void fetchBlackListedUsers(String userId) { + disposable.add( + userService.getTutorBlacklistedByID(userId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver>() { + @Override + public void onSuccess(List users) { + +// mAdapter.notifyDataSetChanged(); + toggleEmptyNotes(); + } + + @Override + public void onError(Throwable e) { + showError(e); + } + }) + ); + } + + private void showError(Throwable e) { + String message; + + if (e instanceof HttpException) { + ResponseBody responseBody = ((HttpException) e).response().errorBody(); + message = RestApiHelper.getErrorMessage(responseBody); + } else { + message = "Network Error !"; + } + Snackbar.make(getWindow().getDecorView().getRootView(), message, Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + + private void toggleEmptyNotes() { + if (blackList.size() > 0) { + noNotesView.setVisibility(View.GONE); + } else { + noNotesView.setVisibility(View.VISIBLE); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + disposable.dispose(); + } + + @Override + public void onResume() { + super.onResume(); + fetchBlackListedUsers(PrefUtils.getUserId(this)); + } + + @Override + public void onPause() { + super.onPause(); + } + + @Override + public void onStop() { + super.onStop(); + } +} diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/SpecialList.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/SpecialList.java new file mode 100644 index 0000000..ec12a92 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/SpecialList.java @@ -0,0 +1,19 @@ +package com.uam.wmi.findmytutor.activity; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import com.uam.wmi.findmytutor.R; + +public abstract class SpecialList extends AppCompatActivity { + @Override + protected void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + setContentView(getContentViewId()); + + } + + abstract int getContentViewId(); + + +} diff --git a/app/src/main/java/com/uam/wmi/findmytutor/adapters/BlackListAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/adapters/BlackListAdapter.java new file mode 100644 index 0000000..19aaa07 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/adapters/BlackListAdapter.java @@ -0,0 +1,56 @@ +package com.uam.wmi.findmytutor.adapters; + +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.TextView; + +import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.model.User; + +import java.util.List; + +import butterknife.ButterKnife; + +public class BlackListAdapter extends RecyclerView.Adapter { + + private Context context; + private List blackListed; + + public BlackListAdapter(Context context,List list) { + this.context = context; + this.blackListed = list; + } + + @Override + public BlackListAdapter.BlackListHolder onCreateViewHolder(ViewGroup parent, + int viewType) { + View v = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.black_list_row, parent, false); + + BlackListHolder vh = new BlackListHolder(v); + return vh; + } + + @Override + public void onBindViewHolder(BlackListHolder holder, int position) { + + } + + @Override + public int getItemCount(){ + return blackListed.size(); + } + + + public static class BlackListHolder extends RecyclerView.ViewHolder { + + public BlackListHolder(View view){ + super(view); + ButterKnife.bind(this, view); + } + } + +} diff --git a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java index 87210e5..ed2f50a 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java @@ -37,7 +37,7 @@ public class TutorsListAdapter extends RecyclerView.Adapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/black_list_row.xml b/app/src/main/res/layout/black_list_row.xml new file mode 100644 index 0000000..f35e962 --- /dev/null +++ b/app/src/main/res/layout/black_list_row.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_black_list.xml b/app/src/main/res/layout/content_black_list.xml new file mode 100644 index 0000000..4c49708 --- /dev/null +++ b/app/src/main/res/layout/content_black_list.xml @@ -0,0 +1,40 @@ + + + + + + + +