From 10808ef23c6fc46b227eace01e0c81c0b935caa9 Mon Sep 17 00:00:00 2001 From: Arthur Diniz Date: Fri, 12 May 2017 19:48:45 -0300 Subject: [PATCH 1/3] [OPTIMIZATION] Optimizes ListView and Fragments - Changes ListView to RecycleView Signed-off-by: Arthur Diniz --- .../Controller/UserClassControl.java | 10 +- .../gpp/trezentos/DAO/getClassRequest.java | 9 +- .../mds/gpp/trezentos/View/AboutFragment.java | 5 + .../mds/gpp/trezentos/View/ClassFragment.java | 183 +++++++++++------- .../trezentos/View/EvaluationFragment.java | 7 +- .../mds/gpp/trezentos/View/MainActivity.java | 72 ++----- .../mds/gpp/trezentos/View/UserFragment.java | 11 +- app/src/main/res/layout/activity_main.xml | 5 +- app/src/main/res/layout/fragment_class.xml | 26 ++- app/src/main/res/layout/user_class_item.xml | 60 ++++++ 10 files changed, 240 insertions(+), 148 deletions(-) create mode 100644 app/src/main/res/layout/user_class_item.xml diff --git a/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java b/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java index 7b3069c..ca14dd9 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java @@ -72,7 +72,6 @@ public String validateInformation(String className, String institution, } } - public ArrayList getClasses() { getAllClassRequest classRequest = new getAllClassRequest(); @@ -106,14 +105,7 @@ public ArrayList getClassesFromUser(String email) { String serverResponse = "404"; - try { - serverResponse = classRequest.execute().get(); - - }catch (InterruptedException e){ - e.printStackTrace(); - }catch (ExecutionException e){ - e.printStackTrace(); - } + serverResponse = classRequest.get(); ArrayList userClasses = new ArrayList(); diff --git a/app/src/main/java/fga/mds/gpp/trezentos/DAO/getClassRequest.java b/app/src/main/java/fga/mds/gpp/trezentos/DAO/getClassRequest.java index c369ada..33a880b 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/DAO/getClassRequest.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/DAO/getClassRequest.java @@ -1,16 +1,14 @@ package fga.mds.gpp.trezentos.DAO; -import android.os.AsyncTask; -import android.util.Log; +import android.util.Log; import java.io.IOException; - import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -public class getClassRequest extends AsyncTask{ +public class getClassRequest { private final String email; private final static String url = "https://trezentos-api.herokuapp.com/api/class/user/find"; @@ -19,8 +17,7 @@ public getClassRequest(String email){ this.email = email; } - @Override - protected String doInBackground(String... params){ + public String get(){ OkHttpClient client = new OkHttpClient(); String urlWithParameters = getUrlWithParameters(); diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java index c845e20..d2542e5 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java @@ -20,6 +20,11 @@ public class AboutFragment extends Fragment{ private ArrayList about; private static AboutAdapter adapter; + public static AboutFragment newInstance() { + AboutFragment fragment = new AboutFragment(); + return fragment; + } + @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java index 411454a..8a4f00e 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java @@ -1,122 +1,175 @@ package fga.mds.gpp.trezentos.View; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; +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 android.widget.AdapterView; -import android.widget.ListView; -import java.util.ArrayList; -import java.util.List; +import android.widget.ProgressBar; +import android.widget.TextView; +import java.util.ArrayList; import fga.mds.gpp.trezentos.Controller.UserClassControl; -import fga.mds.gpp.trezentos.Model.UserAccount; import fga.mds.gpp.trezentos.Model.UserClass; import fga.mds.gpp.trezentos.R; + + public class ClassFragment extends Fragment{ public ArrayList userClasses; - private static CustomAdapter adapter; private FloatingActionButton floatingActionButton; - private FragmentTransaction fragmentTransaction; - public ListView listView; + private String userEmail; + public ProgressBar progressBar; + public UserClassControl userClassControl; + + public static ClassFragment newInstance() { + ClassFragment fragment = new ClassFragment(); + return fragment; + } @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); + + + + } @Override public void onResume(){ - super.onResume(); - - loadClasses(); - adapter = new CustomAdapter(userClasses,getActivity().getApplicationContext()); - if(listView.getAdapter() == null){ //Adapter not set yet. - listView.setAdapter(adapter); - } - else{ //Already has an adapter - listView.setAdapter(adapter); - adapter.notifyDataSetChanged(); - listView.invalidateViews(); - listView.refreshDrawableState(); - } + new ServerOperation().execute(); } - private void loadClasses(){ - SharedPreferences session = PreferenceManager.getDefaultSharedPreferences(getActivity()); - String email = session.getString("userEmail",""); - UserClassControl userClassControl = UserClassControl.getInstance(getActivity()); + @Override + public void onStart() { + super.onStart(); - userClasses = userClassControl.getClassesFromUser(email); - } + //loadClasses(); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ final View view = inflater.inflate(R.layout.fragment_class, container, false); - listView = (ListView) view.findViewById(R.id.class_list_view); + progressBar = (ProgressBar) view.findViewById(R.id.progressBar); + progressBar.setVisibility(View.VISIBLE); + new ServerOperation().execute(); + initFloatingActionButton(view); - final UserClass userClass = new UserClass(); - final UserAccount userAccount = new UserAccount(); + return view; + } - loadClasses(); + private class Adapter extends RecyclerView.Adapter { - adapter = new CustomAdapter(userClasses,getActivity().getApplicationContext()); + private final ArrayList category; + private Context context; - listView.setAdapter(adapter); - adapter.notifyDataSetChanged(); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id){ - Intent goClass = new Intent(getActivity(), ClassActivity.class); - UserClass userClassCalled = (UserClass) listView.getItemAtPosition(position); - goClass.putExtra("Class", userClassCalled); + public Adapter(ArrayList category, Context context) { + this.category = category; + this.context = context; + } - startActivity(goClass); - } - }); + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - floatingActionButton = (FloatingActionButton) view.findViewById(R.id.class_image_button); - floatingActionButton.setOnClickListener(new FloatingActionButton.OnClickListener(){ - @Override - public void onClick(View v) { + View view = LayoutInflater.from(context).inflate(R.layout.user_class_item, parent, false); + ViewHolder holder = new ViewHolder(view); - startActivity(new Intent(getActivity(), CreateClassActivity.class)); - } - }); + return holder; + } - return view; + @Override + public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { + + ViewHolder holder = (ViewHolder) viewHolder; + + + UserClass userClass = userClasses.get(position) ; + holder.className.setText(userClass.getClassName()); + holder.classInstitution.setText(userClass.getInstitution()); + + } + + @Override + public int getItemCount() { + + return category.size(); + } } - public void openDialogFragment(View view){ - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - CreateClassDialogFragment ccdf = new CreateClassDialogFragment(); - ccdf.show(fragmentTransaction, "dialog"); + public class ViewHolder extends RecyclerView.ViewHolder { + + final TextView className; + final TextView classInstitution; + + + + + public ViewHolder(View view) { + super(view); + className = (TextView) view.findViewById(R.id.class_name); + classInstitution = (TextView) view.findViewById(R.id.class_institution); + } + } + class ServerOperation extends AsyncTask { + public ServerOperation(){} - public void turnOffDialogFragment(){ - FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); - CreateClassDialogFragment ccdf = (CreateClassDialogFragment) getFragmentManager() - .findFragmentByTag("dialog"); - if(ccdf != null){ - ccdf.dismiss(); - fragmentTransaction.remove(ccdf); - //updateClasses(); + @Override + protected String doInBackground(String... params) { + + userClasses = userClassControl.getClassesFromUser(userEmail); + return null; } + @Override + protected void onPostExecute(String result) { + progressBar.setVisibility(View.GONE); + + RecyclerView recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler); + recyclerView.setAdapter(new Adapter(userClasses, getActivity().getApplicationContext())); + + final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); + layoutManager.setOrientation(LinearLayoutManager.VERTICAL); + recyclerView.setLayoutManager(layoutManager); + + } + + @Override + protected void onPreExecute() { + userClassControl = UserClassControl.getInstance(getActivity()); + SharedPreferences session = PreferenceManager.getDefaultSharedPreferences(getActivity()); + userEmail = session.getString("userEmail",""); + } + + @Override + protected void onProgressUpdate(Void... values) {} + } + + public void initFloatingActionButton(View view){ + floatingActionButton = (FloatingActionButton) view.findViewById(R.id.class_image_button); + floatingActionButton.setOnClickListener(new FloatingActionButton.OnClickListener(){ + @Override + public void onClick(View v) { + + startActivity(new Intent(getActivity(), CreateClassActivity.class)); + } + }); } } \ No newline at end of file diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java index c546687..c3d437d 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java @@ -11,8 +11,11 @@ public class EvaluationFragment extends Fragment { - private static final String ARG_PARAM1 = "param1"; - private static final String ARG_PARAM2 = "param2"; + + public static EvaluationFragment newInstance() { + EvaluationFragment fragment = new EvaluationFragment(); + return fragment; + } @Override public void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java b/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java index b898959..84d9f7e 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java @@ -1,16 +1,14 @@ package fga.mds.gpp.trezentos.View; import android.content.Intent; -import android.os.Build; import android.support.annotation.NonNull; -import android.support.annotation.RequiresApi; import android.support.design.widget.BottomNavigationView; +import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; @@ -18,14 +16,10 @@ import com.facebook.AccessToken; import fga.mds.gpp.trezentos.R; -import static com.facebook.FacebookSdk.getApplicationContext; - public class MainActivity extends AppCompatActivity{ private BottomNavigationView bottomNavigationView; - private ClassFragment fragment; - private Menu menu; - private FragmentTransaction fragmentTransaction; + private Fragment selectedFragment; @Override public boolean onCreateOptionsMenu(Menu menu){ @@ -36,9 +30,7 @@ public boolean onCreateOptionsMenu(Menu menu){ @Override public boolean onOptionsItemSelected(MenuItem item){ - int id = item.getItemId(); - // Noinspection SimplifiableIfStatement if(id == R.id.action_settings){ Toast.makeText(MainActivity.this, "Configurações", Toast.LENGTH_SHORT).show(); @@ -52,9 +44,11 @@ public boolean onOptionsItemSelected(MenuItem item){ return super.onOptionsItemSelected(item); } + @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + selectedFragment = null; SharedPreferences session = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); if(AccessToken.getCurrentAccessToken() == null && !session.getBoolean("IsUserLogged", false)){ @@ -64,63 +58,40 @@ protected void onCreate(Bundle savedInstanceState){ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - ClassFragment classFragment = new ClassFragment(); - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.frame, classFragment, "fragmentclass" ); - fragmentTransaction.commit(); - bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottom_nav); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView .OnNavigationItemSelectedListener(){ @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { - - FragmentTransaction fragmentTransaction; - switch (item.getItemId()){ case R.id.salas_item: - Toast.makeText(MainActivity.this, "Button Salas", Toast.LENGTH_SHORT).show(); - - ClassFragment classFragment = new ClassFragment(); - fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.frame, classFragment, "fragment_class"); - fragmentTransaction.commit(); - - return true; + selectedFragment = ClassFragment.newInstance(); + break; case R.id.usuario_item: - Toast.makeText(MainActivity.this, "Button Usuario", Toast.LENGTH_SHORT).show(); - - UserFragment userFragment = new UserFragment(); - fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.frame,userFragment, "fragment_user" ); - fragmentTransaction.commit(); - - return true; + selectedFragment = UserFragment.newInstance(); + break; case R.id.about_item: - Toast.makeText(MainActivity.this,"Button Sobre", Toast.LENGTH_SHORT).show(); - - AboutFragment aboutFragment = new AboutFragment(); - fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.frame,aboutFragment, "fragment_about" ); - fragmentTransaction.commit(); - - return true; + selectedFragment = AboutFragment.newInstance(); + break; case R.id.avaliacao_item: - Toast.makeText(MainActivity.this,"Button Avaliação", Toast.LENGTH_SHORT).show(); - - EvaluationFragment evaluationFragment = new EvaluationFragment(); - fragmentTransaction = getSupportFragmentManager().beginTransaction(); - fragmentTransaction.replace(R.id.frame,evaluationFragment, "fragment_evaluation" ); - fragmentTransaction.commit(); - return true; + selectedFragment = EvaluationFragment.newInstance(); + break; } + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.frame, selectedFragment); + transaction.commit(); return true; } }); + + //Manually displaying the first fragment - one time only + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.frame, ClassFragment.newInstance()); + transaction.commit(); } private void goLoginScreen() { @@ -131,8 +102,7 @@ private void goLoginScreen() { } private void goClassScreen() { - Intent intent = new Intent(getApplicationContext(), SearchActivity.class); - startActivity(intent); + startActivity(new Intent(getApplicationContext(), SearchActivity.class)); } } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java index 46cce15..6e9cdc9 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java @@ -18,16 +18,15 @@ public class UserFragment extends Fragment implements View.OnClickListener{ - private static final String ARG_PARAM1 = "param1"; - private static final String ARG_PARAM2 = "param2"; + private Button logoutButton; private Button classButton; - private String mParam1; - private String mParam2; - private OnFragmentInteractionListener mListener; - public UserFragment(){ + private OnFragmentInteractionListener mListener; + public static UserFragment newInstance() { + UserFragment fragment= new UserFragment(); + return fragment; } @Override diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d5b1914..a80afb3 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -29,8 +29,9 @@ android:id="@+id/frame" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginTop="50dp" - android:layout_marginBottom="55dp"/> + android:layout_marginTop="?attr/actionBarSize" + android:layout_above="@+id/bottom_nav" + android:animateLayoutChanges="true"/> - + + + diff --git a/app/src/main/res/layout/user_class_item.xml b/app/src/main/res/layout/user_class_item.xml new file mode 100644 index 0000000..05d9ca4 --- /dev/null +++ b/app/src/main/res/layout/user_class_item.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b345f2929d53af79cafb76929d6f17b2e59a1ff0 Mon Sep 17 00:00:00 2001 From: Arthur Diniz Date: Sat, 13 May 2017 02:02:46 -0300 Subject: [PATCH 2/3] [OPTIMIZATION] General optimization - Changes FragmentAdapter to Singleton - Debug Touch Listener class Activity - Optimizes Activity onCreate - Optimizes ExamFragment Signed-off-by: Arthur Diniz Signed-off-by: Guilherme Augusto --- .../Controller/UserClassControl.java | 21 +---- .../trezentos/Controller/UserExamControl.java | 10 +-- .../gpp/trezentos/DAO/getAllClassRequest.java | 13 ++- .../mds/gpp/trezentos/DAO/getExamRequest.java | 8 +- .../mds/gpp/trezentos/View/AboutFragment.java | 7 +- .../mds/gpp/trezentos/View/ClassActivity.java | 55 ++++++++----- .../mds/gpp/trezentos/View/ClassAdapter.java | 17 +--- .../mds/gpp/trezentos/View/ClassFragment.java | 47 +++++++---- .../gpp/trezentos/View/EditClassActivity.java | 3 + .../trezentos/View/EvaluationFragment.java | 8 +- .../mds/gpp/trezentos/View/ExamsFragment.java | 81 +++++++++++++------ .../mds/gpp/trezentos/View/MainActivity.java | 10 +-- .../gpp/trezentos/View/SearchActivity.java | 59 +++++++++++--- .../mds/gpp/trezentos/View/UserFragment.java | 8 +- app/src/main/res/drawable/ic_more_white.xml | 9 +++ app/src/main/res/layout/activity_search.xml | 7 ++ app/src/main/res/layout/class_item.xml | 4 +- app/src/main/res/layout/fragment_class.xml | 6 +- app/src/main/res/layout/fragment_exams.xml | 7 ++ app/src/main/res/layout/user_class_item.xml | 2 +- 20 files changed, 234 insertions(+), 148 deletions(-) create mode 100644 app/src/main/res/drawable/ic_more_white.xml diff --git a/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java b/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java index ca14dd9..8282ea7 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserClassControl.java @@ -5,10 +5,7 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; - import java.util.ArrayList; -import java.util.concurrent.ExecutionException; - import fga.mds.gpp.trezentos.DAO.getAllClassRequest; import fga.mds.gpp.trezentos.DAO.getClassRequest; import fga.mds.gpp.trezentos.DAO.CreateClassPost; @@ -25,7 +22,6 @@ public UserClassControl(final Context context){ this.context = context; } - public static UserClassControl getInstance(final Context context){ if(instance == null){ @@ -48,11 +44,8 @@ public void validateCreateClass(String className, String institution, }catch (UserException userException){ userException.printStackTrace(); } - - } - public String validateInformation(String className, String institution, String cutOff, String password, String addition, String sizeGroups) throws UserException{ @@ -73,20 +66,9 @@ public String validateInformation(String className, String institution, } public ArrayList getClasses() { - getAllClassRequest classRequest = new getAllClassRequest(); - String serverResponse = "404"; - - try { - serverResponse = classRequest.execute().get(); - - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } - + serverResponse = classRequest.get(); ArrayList userClasses = new ArrayList(); try { @@ -96,7 +78,6 @@ public ArrayList getClasses() { } return userClasses; - } public ArrayList getClassesFromUser(String email) { diff --git a/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserExamControl.java b/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserExamControl.java index 50abff2..63f9407 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserExamControl.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/Controller/UserExamControl.java @@ -64,15 +64,7 @@ public ArrayList getExamsFromUser(String email, String userClassName) { getExamRequest examRequest = new getExamRequest(email, userClassName); String serverResponse = "404"; - - try { - serverResponse = examRequest.execute().get(); - }catch (InterruptedException e){ - e.printStackTrace(); - }catch (ExecutionException e){ - e.printStackTrace(); - } - + serverResponse = examRequest.get(); ArrayList userExams = new ArrayList(); try{ diff --git a/app/src/main/java/fga/mds/gpp/trezentos/DAO/getAllClassRequest.java b/app/src/main/java/fga/mds/gpp/trezentos/DAO/getAllClassRequest.java index c7ad4e3..34c5eb1 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/DAO/getAllClassRequest.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/DAO/getAllClassRequest.java @@ -10,18 +10,15 @@ import okhttp3.Request; import okhttp3.Response; -public class getAllClassRequest extends AsyncTask { +public class getAllClassRequest { - private final String url = - "https://trezentos-api.herokuapp.com/api/class/find"; + private final String url = "https://trezentos-api.herokuapp.com/api/class/find"; - public getAllClassRequest(){ + public getAllClassRequest(){} - } - @Override - protected String doInBackground(String... params) { + public String get(){ OkHttpClient client = new OkHttpClient(); @@ -39,8 +36,10 @@ protected String doInBackground(String... params) { } return null; + } + private String getUrlWithParameters() { HttpUrl.Builder builder = HttpUrl.parse(url).newBuilder(); diff --git a/app/src/main/java/fga/mds/gpp/trezentos/DAO/getExamRequest.java b/app/src/main/java/fga/mds/gpp/trezentos/DAO/getExamRequest.java index 94644e6..78763b8 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/DAO/getExamRequest.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/DAO/getExamRequest.java @@ -11,22 +11,19 @@ import okhttp3.Response; -public class getExamRequest extends AsyncTask{ +public class getExamRequest { private final String email; private final String userClassName; - private final String url = "https://trezentos-api.herokuapp.com/api/exam/class/user/find"; public getExamRequest(String email, String userClassName){ - this.email = email; this.userClassName = userClassName; } - @Override - protected String doInBackground(String... params){ + public String get(){ OkHttpClient client = new OkHttpClient(); String urlWithParameters = getUrlWithParameters(); @@ -43,6 +40,7 @@ protected String doInBackground(String... params){ Log.i("LOG", "IOException in doInBackground method"); } return null; + } private String getUrlWithParameters(){ diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java index d2542e5..ebd48db 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/AboutFragment.java @@ -19,9 +19,12 @@ public class AboutFragment extends Fragment{ private ArrayList about; private static AboutAdapter adapter; + private static AboutFragment fragment; - public static AboutFragment newInstance() { - AboutFragment fragment = new AboutFragment(); + public static AboutFragment getInstance() { + if(fragment == null){ + fragment = new AboutFragment(); + } return fragment; } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassActivity.java b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassActivity.java index 693ae3d..3f30ea3 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassActivity.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassActivity.java @@ -10,7 +10,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.TextView; import fga.mds.gpp.trezentos.Model.UserClass; import fga.mds.gpp.trezentos.R; @@ -19,33 +18,43 @@ public class ClassActivity extends AppCompatActivity{ private FloatingActionButton floatingActionButton; private UserClass userClass; + private ViewPager viewPager; + private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_class); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); + initToolbar(); + initViewPager(); + initTabLayout(); + initFloatingButton(); + initRecover(); + + if(userClass != null){setTitle(userClass.getClassName());} + + } + + public void initToolbar(){ + toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); + } - ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); + public void initViewPager(){ + viewPager = (ViewPager) findViewById(R.id.view_pager); setupViewPager(viewPager); + } + public void initTabLayout(){ TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); + } - Intent intent = getIntent(); - userClass = (UserClass) intent.getSerializableExtra("Class"); - - if(userClass != null){ -// TextView textView = (TextView) findViewById(R.id.testClass); -// textView.setText(userClass.getClassName()); - setTitle(userClass.getClassName()); - } - + public void initFloatingButton(){ floatingActionButton = (FloatingActionButton) findViewById(R.id.floating_btn); floatingActionButton.setOnClickListener(new FloatingActionButton.OnClickListener() { @@ -54,12 +63,15 @@ public void onClick(View v) { Intent goCreateExam = new Intent(getApplicationContext(), CreateExamActivity.class); UserClass userClassCalled = (UserClass) userClass; goCreateExam.putExtra("Class", userClassCalled); - startActivity(goCreateExam); - //Toast.makeText(ClassActivity.this,"Criar", Toast.LENGTH_SHORT).show(); - } }); + + } + + public void initRecover(){ + Intent intent = getIntent(); + userClass = (UserClass) intent.getSerializableExtra("Class"); } private void setupViewPager(ViewPager viewPager){ @@ -73,7 +85,6 @@ private void setupViewPager(ViewPager viewPager){ @Override public boolean onSupportNavigateUp(){ onBackPressed(); - return true; } @@ -81,7 +92,6 @@ public boolean onSupportNavigateUp(){ public boolean onCreateOptionsMenu(Menu menu){ // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_class, menu); - return true; } @@ -94,14 +104,15 @@ public boolean onOptionsItemSelected(MenuItem item){ } else if(id == R.id.action_edit_class){ - Intent intentEditClass = new Intent(getApplicationContext(), EditClassActivity.class); - UserClass userClassCalled = (UserClass) userClass; - intentEditClass.putExtra("Class", userClassCalled); + Intent intentEditClass = new Intent(getApplicationContext(), EditClassActivity.class); + UserClass userClassCalled = (UserClass) userClass; + intentEditClass.putExtra("Class", userClassCalled); - startActivity(intentEditClass); + startActivity(intentEditClass); } return super.onOptionsItemSelected(item); } + } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassAdapter.java b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassAdapter.java index 44b2e3b..2b1c03b 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassAdapter.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassAdapter.java @@ -11,7 +11,7 @@ import fga.mds.gpp.trezentos.Model.UserClass; import fga.mds.gpp.trezentos.R; -public class ClassAdapter extends RecyclerView.Adapter implements View.OnClickListener, Filterable { +public class ClassAdapter extends RecyclerView.Adapter implements Filterable { private ArrayList userClasses; private ArrayList filteredClasses; @@ -19,16 +19,13 @@ public class ClassAdapter extends RecyclerView.Adapter implements View.OnClickLi private Context context; private RecyclerView recyclerView; private FriendFilter friendFilter; - private String email; - public ClassAdapter(ArrayList userClasses, Context context, - RecyclerView recyclerView, String email){ + + public ClassAdapter(ArrayList userClasses, Context context, RecyclerView recyclerView){ this.userClasses = userClasses; this.filteredClasses = userClasses; this.context = context; this.recyclerView = recyclerView; - this.email = email; - getFilter(); } @@ -37,7 +34,6 @@ public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, int vi View view = LayoutInflater.from(context) .inflate(R.layout.class_item, parent, false); ClassViewHolder holder = new ClassViewHolder(view); - view.setOnClickListener(this); return holder; } @@ -71,13 +67,6 @@ public Filter getFilter() { return friendFilter; } - @Override - public void onClick(final View view) { - int itemPosition = recyclerView.getChildLayoutPosition(view); - UserClass userClass = userClasses.get(itemPosition); - - } - private class FriendFilter extends Filter { @Override diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java index 8a4f00e..a6c0d7e 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/ClassFragment.java @@ -21,8 +21,6 @@ import fga.mds.gpp.trezentos.Model.UserClass; import fga.mds.gpp.trezentos.R; - - public class ClassFragment extends Fragment{ public ArrayList userClasses; @@ -30,9 +28,13 @@ public class ClassFragment extends Fragment{ private String userEmail; public ProgressBar progressBar; public UserClassControl userClassControl; + private static ClassFragment fragment; + - public static ClassFragment newInstance() { - ClassFragment fragment = new ClassFragment(); + public static ClassFragment getInstance() { + if(fragment == null){ + fragment = new ClassFragment(); + } return fragment; } @@ -72,15 +74,17 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa return view; } - private class Adapter extends RecyclerView.Adapter { + private class Adapter extends RecyclerView.Adapter implements View.OnClickListener { - private final ArrayList category; + private final ArrayList userClasses; private Context context; + private RecyclerView recyclerView; - public Adapter(ArrayList category, Context context) { - this.category = category; + public Adapter(ArrayList userClasses, Context context, RecyclerView recyclerView) { + this.userClasses = userClasses; this.context = context; + this.recyclerView = recyclerView; } @Override @@ -88,6 +92,7 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType View view = LayoutInflater.from(context).inflate(R.layout.user_class_item, parent, false); ViewHolder holder = new ViewHolder(view); + view.setOnClickListener(this); return holder; } @@ -106,8 +111,26 @@ public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { @Override public int getItemCount() { + return userClasses.size(); + } + + @Override + public long getItemId(int position) { + return super.getItemId(position); + } + + + @Override + public void onClick(View v) { + + int itemPosition = recyclerView.getChildLayoutPosition(v); + UserClass userClass = userClasses.get(itemPosition); + + Intent goClass = new Intent(context, ClassActivity.class); + goClass.putExtra("Class", userClass); + goClass.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(goClass); - return category.size(); } } @@ -116,15 +139,11 @@ public class ViewHolder extends RecyclerView.ViewHolder { final TextView className; final TextView classInstitution; - - - public ViewHolder(View view) { super(view); className = (TextView) view.findViewById(R.id.class_name); classInstitution = (TextView) view.findViewById(R.id.class_institution); } - } class ServerOperation extends AsyncTask { @@ -143,7 +162,7 @@ protected void onPostExecute(String result) { progressBar.setVisibility(View.GONE); RecyclerView recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler); - recyclerView.setAdapter(new Adapter(userClasses, getActivity().getApplicationContext())); + recyclerView.setAdapter(new Adapter(userClasses, getActivity().getApplicationContext(), recyclerView)); final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/EditClassActivity.java b/app/src/main/java/fga/mds/gpp/trezentos/View/EditClassActivity.java index 085d024..e64695f 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/EditClassActivity.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/EditClassActivity.java @@ -49,6 +49,9 @@ protected void onCreate(Bundle savedInstanceState){ className.setText(userClass.getClassName()); instituition.setText(userClass.getInstitution()); classPassword.setText(userClass.getPassword()); +// cutGrade.setText((int) userClass.getCutOff()); +// groupsSize.setText(userClass.getSizeGroups()); +// addition.setText((int) userClass.getAddition()); saveButton.setOnClickListener(new View.OnClickListener(){ diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java index c3d437d..9a6a005 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/EvaluationFragment.java @@ -11,9 +11,13 @@ public class EvaluationFragment extends Fragment { + private static EvaluationFragment fragment; - public static EvaluationFragment newInstance() { - EvaluationFragment fragment = new EvaluationFragment(); + public static EvaluationFragment getInstance() { + + if(fragment == null){ + fragment = new EvaluationFragment(); + } return fragment; } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java index be03cd4..0f4d746 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java @@ -4,19 +4,26 @@ import android.content.SharedPreferences; import android.net.Uri; import android.net.sip.SipAudioCall; +import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +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 android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; +import android.widget.ProgressBar; + import java.util.ArrayList; + +import fga.mds.gpp.trezentos.Controller.UserClassControl; import fga.mds.gpp.trezentos.Controller.UserExamControl; import fga.mds.gpp.trezentos.Model.Exam; @@ -30,6 +37,8 @@ public class ExamsFragment extends Fragment{ public ArrayAdapter arrayAdapter; public UserExamControl userExamControl; private UserClass userClass; + public ProgressBar progressBar; + public String userEmail; public ExamsFragment() { @@ -52,44 +61,25 @@ public void onCreate(Bundle savedInstanceState){ public void onResume(){ super.onResume(); - loadClasses(); - arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, userExams); - if(listView.getAdapter() == null){ //Adapter not set yet. - listView.setAdapter(arrayAdapter); - } - else{ //Already has an adapter - listView.setAdapter(arrayAdapter); - arrayAdapter.notifyDataSetChanged(); - listView.invalidateViews(); - listView.refreshDrawableState(); - } } - private void loadClasses(){ + private void loadRecover(){ + SharedPreferences session = PreferenceManager.getDefaultSharedPreferences(getActivity()); - String email = session.getString("userEmail",""); + userEmail = session.getString("userEmail",""); + Intent intent = getActivity().getIntent(); userClass = (UserClass) intent.getSerializableExtra("Class"); -// email = "teste@teste.com"; userExamControl = UserExamControl.getInstance(getActivity()); - userExams = userExamControl.getExamsFromUser(email, userClass.getClassName()); } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - final View view = inflater.inflate(R.layout.fragment_exams, container, false); - - - // Inflate the layout for this fragment - loadClasses(); + public void initListView(){ arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, userExams); arrayAdapter.notifyDataSetChanged(); - //friends.clear(); - //Snackbar.make(view, userExams. , Snackbar.LENGTH_LONG).setAction("No action", null).show(); - listView = (ListView) view.findViewById(R.id.list); + listView = (ListView) getActivity().findViewById(R.id.list); listView.setAdapter(arrayAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override @@ -98,6 +88,18 @@ public void onItemClick(AdapterView parent, View view, int position, long id) Snackbar.make(view, "Click List", Snackbar.LENGTH_LONG).setAction("No action", null).show(); } }); + + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + final View view = inflater.inflate(R.layout.fragment_exams, container, false); + + progressBar = (ProgressBar) view.findViewById(R.id.progressBarExam); + progressBar.setVisibility(View.VISIBLE); + + new ServerOperation().execute(); + return view; } @@ -108,4 +110,33 @@ public void openDialogFragment(View view){ ccdf.show(fragmentTransaction, "dialog"); } + + + + class ServerOperation extends AsyncTask { + + public ServerOperation(){} + + @Override + protected String doInBackground(String... params) { + + userExams = userExamControl.getExamsFromUser(userEmail, userClass.getClassName()); + return null; + } + + @Override + protected void onPostExecute(String result) { + progressBar.setVisibility(View.GONE); + initListView(); + + } + + @Override + protected void onPreExecute() { + loadRecover(); + } + + @Override + protected void onProgressUpdate(Void... values) {} + } } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java b/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java index 84d9f7e..03b58aa 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/MainActivity.java @@ -65,19 +65,19 @@ protected void onCreate(Bundle savedInstanceState){ public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.salas_item: - selectedFragment = ClassFragment.newInstance(); + selectedFragment = ClassFragment.getInstance(); break; case R.id.usuario_item: - selectedFragment = UserFragment.newInstance(); + selectedFragment = UserFragment.getInstance(); break; case R.id.about_item: - selectedFragment = AboutFragment.newInstance(); + selectedFragment = AboutFragment.getInstance(); break; case R.id.avaliacao_item: - selectedFragment = EvaluationFragment.newInstance(); + selectedFragment = EvaluationFragment.getInstance(); break; } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); @@ -90,7 +90,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { //Manually displaying the first fragment - one time only FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.frame, ClassFragment.newInstance()); + transaction.replace(R.id.frame, ClassFragment.getInstance()); transaction.commit(); } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/SearchActivity.java b/app/src/main/java/fga/mds/gpp/trezentos/View/SearchActivity.java index d0e3c9b..a63e7f6 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/SearchActivity.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/SearchActivity.java @@ -3,6 +3,7 @@ import android.app.SearchManager; import android.content.Context; import android.content.SharedPreferences; +import android.os.AsyncTask; import android.preference.PreferenceManager; import android.support.design.widget.AppBarLayout; import android.support.v7.app.AppCompatActivity; @@ -14,8 +15,10 @@ import android.util.Log; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; +import android.widget.ProgressBar; import java.util.ArrayList; import fga.mds.gpp.trezentos.Controller.UserClassControl; @@ -29,21 +32,19 @@ public class SearchActivity extends AppCompatActivity { public ClassAdapter classAdapter; private Toolbar toolbar; private AppBarLayout appBarLayout; - private String email; + private ProgressBar progressBar; + private String userEmail; + public UserClassControl userClassControl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); - - SharedPreferences session = PreferenceManager - .getDefaultSharedPreferences(SearchActivity.this); - email = session.getString("userEmail",""); + progressBar = (ProgressBar) findViewById(R.id.progressBarSearch); initClasses(); initToolbar(); initAppBarLayout(); - initRecyclerView(); } @@ -66,11 +67,14 @@ private void initAppBarLayout(){ private void initRecyclerView(){ - recyclerView = (RecyclerView) findViewById(R.id.recycler); + RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler); + recyclerView.setAdapter(classAdapter); + userClasses = getFormatedClasses(userClasses); - classAdapter = new ClassAdapter(userClasses, getApplicationContext(), recyclerView, email); + classAdapter = new ClassAdapter(userClasses, getApplicationContext(), recyclerView); recyclerView.setAdapter(classAdapter); - RecyclerView.LayoutManager layout = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); + + RecyclerView.LayoutManager layout = new LinearLayoutManager(getApplication(), LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(layout); recyclerView.setOnScrollListener(new HidingScrollListener() { @@ -86,9 +90,8 @@ public void onShow() { } private void initClasses() { - - UserClassControl userClassControl = UserClassControl.getInstance(getApplicationContext()); - userClasses = userClassControl.getClasses(); + progressBar.setVisibility(View.VISIBLE); + new ServerOperation().execute(); } private void hideViews() { @@ -130,7 +133,7 @@ public boolean onQueryTextSubmit(String query) { public ArrayList getFormatedClasses(ArrayList userClasses){ ArrayList tempList = new ArrayList(); for (UserClass userClass : userClasses) { - if (userClass.getOwnerEmail().equals(email) || userClass.getStudents().contains(email)) { + if (userClass.getOwnerEmail().equals(userEmail) || userClass.getStudents().contains(userEmail)) { }else{ tempList.add(userClass); Log.d("PUT", userClass.getClassName()); @@ -138,6 +141,36 @@ public ArrayList getFormatedClasses(ArrayList userClasses) } return tempList; } + + class ServerOperation extends AsyncTask { + + public ServerOperation(){} + + @Override + protected String doInBackground(String... params) { + + userClasses = userClassControl.getClasses(); + return null; + } + + @Override + protected void onPostExecute(String result) { + progressBar.setVisibility(View.GONE); + + initRecyclerView(); + + } + + @Override + protected void onPreExecute() { + userClassControl = UserClassControl.getInstance(getApplicationContext()); + SharedPreferences session = PreferenceManager.getDefaultSharedPreferences(getApplication()); + userEmail = session.getString("userEmail",""); + } + + @Override + protected void onProgressUpdate(Void... values) {} + } } diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java index 6e9cdc9..a57c344 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/UserFragment.java @@ -21,11 +21,13 @@ public class UserFragment extends Fragment implements View.OnClickListener{ private Button logoutButton; private Button classButton; - private OnFragmentInteractionListener mListener; + private static UserFragment fragment; - public static UserFragment newInstance() { - UserFragment fragment= new UserFragment(); + public static UserFragment getInstance() { + if(fragment == null){ + fragment = new UserFragment(); + } return fragment; } diff --git a/app/src/main/res/drawable/ic_more_white.xml b/app/src/main/res/drawable/ic_more_white.xml new file mode 100644 index 0000000..87e46d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_more_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index 802ffb1..adb3e34 100644 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -29,4 +29,11 @@ android:paddingTop="?attr/actionBarSize" android:clipToPadding="false"/> + + diff --git a/app/src/main/res/layout/class_item.xml b/app/src/main/res/layout/class_item.xml index a4abbbe..0e5fa3a 100644 --- a/app/src/main/res/layout/class_item.xml +++ b/app/src/main/res/layout/class_item.xml @@ -10,7 +10,7 @@ @@ -22,6 +22,8 @@ android:text="Nome Sala" android:layout_marginLeft="20dp" android:layout_marginTop="10dp" + android:textStyle="bold" + android:textSize="20dp" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="@android:color/black" /> diff --git a/app/src/main/res/layout/fragment_class.xml b/app/src/main/res/layout/fragment_class.xml index b12c617..28995ce 100644 --- a/app/src/main/res/layout/fragment_class.xml +++ b/app/src/main/res/layout/fragment_class.xml @@ -36,12 +36,8 @@ android:id="@+id/progressBar" android:layout_width="50dp" android:layout_height="50dp" - android:layout_gravity="center|bottom" - android:layout_marginBottom="270dp" + android:layout_gravity="center_horizontal|center_vertical" android:visibility="gone" /> - - - diff --git a/app/src/main/res/layout/fragment_exams.xml b/app/src/main/res/layout/fragment_exams.xml index d8afe08..7f457e8 100644 --- a/app/src/main/res/layout/fragment_exams.xml +++ b/app/src/main/res/layout/fragment_exams.xml @@ -14,6 +14,13 @@ + + diff --git a/app/src/main/res/layout/user_class_item.xml b/app/src/main/res/layout/user_class_item.xml index 05d9ca4..d6af31e 100644 --- a/app/src/main/res/layout/user_class_item.xml +++ b/app/src/main/res/layout/user_class_item.xml @@ -45,7 +45,7 @@ Date: Sat, 13 May 2017 19:23:43 -0300 Subject: [PATCH 3/3] [EXAM] Creates RecycleView for Exams - Now Exam have one RecycleView to show - Fix bug on reload Exam Signed-off-by: Arthur Diniz Signed-off-by: Guilherme Augusto --- .../mds/gpp/trezentos/View/ExamsFragment.java | 115 ++++++++++++++++-- app/src/main/res/layout/exam_item.xml | 35 ++++++ app/src/main/res/layout/fragment_exams.xml | 14 ++- 3 files changed, 145 insertions(+), 19 deletions(-) create mode 100644 app/src/main/res/layout/exam_item.xml diff --git a/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java b/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java index 0f4d746..c8980c3 100644 --- a/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java +++ b/app/src/main/java/fga/mds/gpp/trezentos/View/ExamsFragment.java @@ -1,5 +1,6 @@ package fga.mds.gpp.trezentos.View; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; @@ -20,6 +21,7 @@ import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.ProgressBar; +import android.widget.TextView; import java.util.ArrayList; @@ -48,7 +50,6 @@ public ExamsFragment() { public static ExamsFragment newInstance(String param1, String param2) { ExamsFragment fragment = new ExamsFragment(); Bundle args = new Bundle(); - return fragment; } @@ -60,6 +61,7 @@ public void onCreate(Bundle savedInstanceState){ @Override public void onResume(){ super.onResume(); + new ServerOperation().execute(); } @@ -76,18 +78,27 @@ private void loadRecover(){ } public void initListView(){ - arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, userExams); - arrayAdapter.notifyDataSetChanged(); - - listView = (ListView) getActivity().findViewById(R.id.list); - listView.setAdapter(arrayAdapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - - Snackbar.make(view, "Click List", Snackbar.LENGTH_LONG).setAction("No action", null).show(); - } - }); +// arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, userExams); +// arrayAdapter.notifyDataSetChanged(); +// +// listView = (ListView) getActivity().findViewById(R.id.list); +// listView.setAdapter(arrayAdapter); +// listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { +// @Override +// public void onItemClick(AdapterView parent, View view, int position, long id) { +// +// Snackbar.make(view, "Click List", Snackbar.LENGTH_LONG).setAction("No action", null).show(); +// } +// }); + + progressBar.setVisibility(View.GONE); + + RecyclerView recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler); + recyclerView.setAdapter(new ExamsFragment.Adapter(userExams, getActivity().getApplicationContext(), recyclerView)); + + final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); + layoutManager.setOrientation(LinearLayoutManager.VERTICAL); + recyclerView.setLayoutManager(layoutManager); } @@ -139,4 +150,82 @@ protected void onPreExecute() { @Override protected void onProgressUpdate(Void... values) {} } + + private class Adapter extends RecyclerView.Adapter implements View.OnClickListener { + + private final ArrayList exams; + private Context context; + private RecyclerView recyclerView; + + + public Adapter(ArrayList exams, Context context, RecyclerView recyclerView) { + this.exams = exams; + this.context = context; + this.recyclerView = recyclerView; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + View view = LayoutInflater.from(context).inflate(R.layout.exam_item, parent, false); + ExamsFragment.ViewHolder holder = new ExamsFragment.ViewHolder(view); + view.setOnClickListener(this); + + return holder; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { + + ExamsFragment.ViewHolder holder = (ExamsFragment.ViewHolder) viewHolder; + + + Exam exam = exams.get(position) ; + holder.className.setText(exam.getNameExam());// + + + } + + @Override + public int getItemCount() { + return exams.size(); + } + + @Override + public long getItemId(int position) { + return super.getItemId(position); + } + + + @Override + public void onClick(View v) { + + int itemPosition = recyclerView.getChildLayoutPosition(v); + Exam exam = exams.get(itemPosition); + + Intent goClass = new Intent(context, ClassActivity.class); + goClass.putExtra("Class", userClass); + goClass.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(goClass); + + } + } + + + public class ViewHolder extends RecyclerView.ViewHolder { + + final TextView className; + + + public ViewHolder(View view) { + super(view); + className = (TextView) view.findViewById(R.id.class_name); + + } + } + + } + + + diff --git a/app/src/main/res/layout/exam_item.xml b/app/src/main/res/layout/exam_item.xml new file mode 100644 index 0000000..82842ac --- /dev/null +++ b/app/src/main/res/layout/exam_item.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_exams.xml b/app/src/main/res/layout/fragment_exams.xml index 7f457e8..80a379e 100644 --- a/app/src/main/res/layout/fragment_exams.xml +++ b/app/src/main/res/layout/fragment_exams.xml @@ -6,13 +6,7 @@ tools:context="fga.mds.gpp.trezentos.View.ExamsFragment"> - - - + +