mmayoub

School, 09.10.2017, start of Grades systems

Oct 9th, 2017
272
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. GradeItem.java
  2. --------------
  3. package com.example.mohamadpc.myapplication4;
  4.  
  5. /**
  6.  * Created by MOHAMADPC on 03/10/2017.
  7.  */
  8.  
  9. public class GradeItem {
  10.     private String subjectName;
  11.     private int grade;
  12.  
  13.     public GradeItem(String subjectName, int grade) {
  14.         this.subjectName = subjectName;
  15.         this.grade = grade;
  16.     }
  17.  
  18.     public String getSubjectName() {
  19.         return subjectName;
  20.     }
  21.  
  22.     public void setSubjectName(String subjectName) {
  23.         this.subjectName = subjectName;
  24.     }
  25.  
  26.     public int getGrade() {
  27.         return grade;
  28.     }
  29.  
  30.     public void setGrade(int grade) {
  31.         this.grade = grade;
  32.     }
  33.  
  34. }
  35.  
  36. GradesAdapter.java
  37. ------------------
  38. package com.example.mohamadpc.myapplication4;
  39.  
  40. import android.content.Context;
  41. import android.content.SharedPreferences;
  42. import android.view.LayoutInflater;
  43. import android.view.View;
  44. import android.view.ViewGroup;
  45. import android.widget.BaseAdapter;
  46. import android.widget.EditText;
  47. import android.widget.ListView;
  48. import android.widget.TextView;
  49. import android.widget.Toast;
  50.  
  51. import java.util.ArrayList;
  52. import java.util.List;
  53.  
  54. import static android.icu.lang.UCharacter.GraphemeClusterBreak.T;
  55.  
  56. /**
  57.  * Created by MOHAMADPC on 03/10/2017.
  58.  */
  59.  
  60. public class GradesAdapter extends BaseAdapter {
  61.     private Context context;
  62.     private String userName;
  63.     private List<GradeItem> gradesList;
  64.  
  65.     public GradesAdapter(String userName, Context context) {
  66.         this.userName = userName;
  67.         this.context = context;
  68.         this.gradesList = LoadStudentGrades(userName, context);
  69.  
  70.     }
  71.  
  72.  
  73.     @Override
  74.     public int getCount() {
  75.         return gradesList.size();
  76.     }
  77.  
  78.     @Override
  79.     public Object getItem(int i) {
  80.         return gradesList.get(i);
  81.     }
  82.  
  83.     @Override
  84.     public long getItemId(int i) {
  85.         return 0;
  86.     }
  87.  
  88.     @Override
  89.     public View getView(final int i, View view, ViewGroup viewGroup) {
  90.         /*TextView tvSubject = new TextView(context);
  91.         tvSubject.setTextSize(30);
  92.         tvSubject.setText(gradesList.get(i).getSubjectName() + " : " + gradesList.get(i).getGrade());
  93.  
  94.         return tvSubject; */
  95.         View rowView = LayoutInflater.from(context).inflate(R.layout.grade_item_layout, null);
  96.         TextView tvSubjectName = (TextView) rowView.findViewById(R.id.tvItemSubject);
  97.         final EditText etGrade = (EditText) rowView.findViewById(R.id.etItemGrade);
  98.         tvSubjectName.setText(gradesList.get(i).getSubjectName());
  99.         etGrade.setText(gradesList.get(i).getGrade() + "");
  100.  
  101.         rowView.findViewById(R.id.btnItemSave).setOnClickListener(new View.OnClickListener() {
  102.             @Override
  103.             public void onClick(View v) {
  104.                 int mynewGrade = Integer.parseInt(etGrade.getText().toString());
  105.                 gradesList.get(i).setGrade(mynewGrade);
  106.  
  107.                 SaveStudentGrades(userName, i, context);
  108.                 Toast.makeText(context, "Update OK!", Toast.LENGTH_SHORT).show();
  109.  
  110.             }
  111.         });
  112.  
  113.         return rowView;
  114.     }
  115.  
  116.     private List<GradeItem> LoadStudentGrades(String userName, Context context) {
  117.         SharedPreferences gradePrefs = context.getSharedPreferences(userName, Context.MODE_PRIVATE);
  118.         List<GradeItem> res = new ArrayList<>();
  119.  
  120.         // not soo good
  121.         Object[] subjects = gradePrefs.getAll().keySet().toArray();
  122.  
  123.         for (int i = 0; i < subjects.length; i += 1) {
  124.             String subjectName = (String) subjects[i];
  125.             int grade = gradePrefs.getInt(subjectName, 0);
  126.             res.add(new GradeItem(subjectName, grade));
  127.         }
  128.         return res;
  129.     }
  130.  
  131.     private void SaveStudentGrades(String userName, int i, Context context) {
  132.         SharedPreferences gradePrefs = context.getSharedPreferences(userName, Context.MODE_PRIVATE);
  133.         SharedPreferences.Editor editor = gradePrefs.edit();
  134.  
  135.         editor.putInt(gradesList.get(i).getSubjectName(), gradesList.get(i).getGrade());
  136.         editor.commit();
  137.     }
  138. }
  139.  
  140. MainActivity.java
  141. -----------------
  142. package com.example.mohamadpc.myapplication4;
  143.  
  144. import android.content.Context;
  145. import android.content.Intent;
  146. import android.content.SharedPreferences;
  147. import android.support.v7.app.AppCompatActivity;
  148. import android.os.Bundle;
  149. import android.view.View;
  150. import android.widget.EditText;
  151. import android.widget.Toast;
  152.  
  153. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  154.     EditText etUserName, etPassword;
  155.  
  156.     @Override
  157.     protected void onCreate(Bundle savedInstanceState) {
  158.         super.onCreate(savedInstanceState);
  159.         setContentView(R.layout.activity_main);
  160.  
  161.         connectToLayout();
  162.     }
  163.  
  164.     private void connectToLayout() {
  165.         etUserName = (EditText) findViewById(R.id.etUserName);
  166.         etPassword = (EditText) findViewById(R.id.etPassword);
  167.  
  168.         findViewById(R.id.btnCancel).setOnClickListener(this);
  169.         findViewById(R.id.btnLogin).setOnClickListener(this);
  170.         findViewById(R.id.btnRegister).setOnClickListener(this);
  171.     }
  172.  
  173.     @Override
  174.     public void onClick(View view) {
  175.         switch (view.getId()) {
  176.             case R.id.btnLogin:
  177.                 String userName = etUserName.getText().toString();
  178.                 String password = etPassword.getText().toString();
  179.  
  180.                 if (userName.length() == 0 || password.length() == 0) {
  181.                     Toast.makeText(this, "Please fill user name and password!", Toast.LENGTH_LONG).show();
  182.                     return;
  183.                 }
  184.  
  185.                 if (isValid(userName, password)) {
  186.                     Intent i = new Intent(this, WelcomeActivity.class);
  187.                     i.putExtra("CurrentUser", userName);
  188.                     startActivity(i);
  189.                     //this.finish();
  190.                 } else {
  191.                     Toast.makeText(this, "Invalid username or password!", Toast.LENGTH_LONG).show();
  192.                 }
  193.                 break;
  194.             case R.id.btnCancel:
  195.                 this.finish();
  196.                 break;
  197.  
  198.             case R.id.btnRegister:
  199.                 userName = etUserName.getText().toString();
  200.                 password = etPassword.getText().toString();
  201.  
  202.                 if (!isUserExist(userName)) {
  203.                     if (addNewUser(userName, password)) {
  204.                         Toast.makeText(this, "User was added!", Toast.LENGTH_LONG).show();
  205.                         etUserName.setText("");
  206.                         etPassword.setText("");
  207.                     } else {
  208.                         Toast.makeText(this, "Error adding a user " + userName, Toast.LENGTH_LONG).show();
  209.                     }
  210.                 }
  211.  
  212.                 break;
  213.             default:
  214.                 Toast.makeText(this, "Error on click", Toast.LENGTH_LONG).show();
  215.                 break;
  216.         }
  217.     }
  218.  
  219.  
  220.     private boolean addNewUser(String userName, String password) {
  221.         SharedPreferences prefs = this.getSharedPreferences("myUsers", Context.MODE_PRIVATE);
  222.  
  223.         SharedPreferences.Editor editor = prefs.edit();
  224.         editor.putString(userName, password);
  225.         return editor.commit();
  226.     }
  227.  
  228.     private boolean isUserExist(String userName) {
  229.         SharedPreferences prefs = this.getSharedPreferences("myUsers", Context.MODE_PRIVATE);
  230.  
  231.         String savedPassword = prefs.getString(userName, "");
  232.  
  233.         return (!savedPassword.equals(""));
  234.     }
  235.  
  236.  
  237.     private boolean isValid(String userName, String password) {
  238.  
  239.         SharedPreferences prefs = this.getSharedPreferences("myUsers", Context.MODE_PRIVATE);
  240.  
  241.         String savedPassword = prefs.getString(userName, "");
  242.  
  243.         return (savedPassword.equals(password));
  244.     }
  245. }
  246.  
  247. WelcomeActivity.java
  248. --------------------
  249. package com.example.mohamadpc.myapplication4;
  250.  
  251. import android.database.DataSetObserver;
  252. import android.support.v7.app.AppCompatActivity;
  253. import android.os.Bundle;
  254. import android.view.View;
  255. import android.view.ViewGroup;
  256. import android.widget.ListAdapter;
  257. import android.widget.ListView;
  258. import android.widget.TextView;
  259.  
  260. import java.util.ArrayList;
  261. import java.util.List;
  262.  
  263. public class WelcomeActivity extends AppCompatActivity {
  264.     private TextView tvWelcome;
  265.     private String userName;
  266.     private ListView lsvGrades;
  267.     private List<GradeItem> myGrades;
  268.  
  269.     @Override
  270.     protected void onCreate(Bundle savedInstanceState) {
  271.         super.onCreate(savedInstanceState);
  272.         setContentView(R.layout.activity_welcome);
  273.  
  274.         userName = getIntent().getStringExtra("CurrentUser");
  275.  
  276.         tvWelcome = (TextView) findViewById(R.id.tvWellcome);
  277.         lsvGrades = (ListView) findViewById(R.id.lsvGrades);
  278.  
  279.         tvWelcome.setText(userName);
  280.         myGrades = new ArrayList<GradeItem>();
  281.         myGrades.add(new GradeItem("Arabic", 90));
  282.         myGrades.add(new GradeItem("Hebrew", 99));
  283.         myGrades.add(new GradeItem("Math", 83));
  284.         myGrades.add(new GradeItem("History", 20));
  285.         myGrades.add(new GradeItem("English", 98));
  286.         myGrades.add(new GradeItem("Fatin", 30));
  287.         myGrades.add(new GradeItem("Ayoub", 80));
  288.         myGrades.add(new GradeItem("Lolo", 100));
  289.  
  290.  
  291.         GradesAdapter gAdapter = new GradesAdapter(userName, this);
  292.         lsvGrades.setAdapter(gAdapter);
  293.  
  294.     }
  295. }
  296.  
  297. activity_layout.xml
  298. -------------------
  299. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  300.     android:layout_width="match_parent"
  301.     android:layout_height="match_parent"
  302.     android:orientation="vertical">
  303.  
  304.     <TextView
  305.         android:layout_width="match_parent"
  306.         android:layout_height="wrap_content"
  307.         android:layout_marginTop="15dp"
  308.         android:gravity="center"
  309.         android:text="@string/login_title"
  310.         android:textColor="#000ff0"
  311.         android:textSize="32sp" />
  312.  
  313.     <EditText
  314.         android:id="@+id/etUserName"
  315.         android:layout_width="match_parent"
  316.         android:layout_height="wrap_content"
  317.         android:layout_marginTop="15dp"
  318.         android:hint="@string/user_name_hint"
  319.         android:textSize="24sp" />
  320.  
  321.     <EditText
  322.         android:id="@+id/etPassword"
  323.         android:layout_width="match_parent"
  324.         android:layout_height="wrap_content"
  325.         android:hint="Password"
  326.         android:inputType="textPassword"
  327.         android:textSize="24sp" />
  328.  
  329.     <LinearLayout
  330.         android:layout_width="match_parent"
  331.         android:layout_height="wrap_content"
  332.         android:orientation="horizontal">
  333.  
  334.         <Button
  335.             android:id="@+id/btnLogin"
  336.             android:layout_width="wrap_content"
  337.             android:layout_height="wrap_content"
  338.             android:layout_margin="10dp"
  339.             android:layout_weight="1"
  340.             android:text="Login"
  341.             android:textSize="18sp" />
  342.  
  343.  
  344.         <Button
  345.             android:id="@+id/btnRegister"
  346.             android:layout_width="wrap_content"
  347.             android:layout_height="wrap_content"
  348.             android:layout_margin="10dp"
  349.             android:layout_weight="1"
  350.             android:text="Register"
  351.             android:textSize="18sp" />
  352.  
  353.         <Button
  354.             android:id="@+id/btnCancel"
  355.             android:layout_width="wrap_content"
  356.             android:layout_height="wrap_content"
  357.             android:layout_margin="10dp"
  358.             android:layout_weight="1"
  359.             android:text="Cancel"
  360.             android:textSize="18sp" />
  361.     </LinearLayout>
  362. </LinearLayout>
  363.  
  364. activity_welcome.xml
  365. --------------------
  366. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  367.     android:layout_width="match_parent"
  368.     android:layout_height="match_parent"
  369.     android:orientation="vertical">
  370.  
  371.     <TextView
  372.         android:id="@+id/tvWellcome"
  373.         android:layout_width="match_parent"
  374.         android:layout_height="wrap_content"
  375.         android:textSize="20sp" />
  376.  
  377.     <ListView
  378.         android:id="@+id/lsvGrades"
  379.         android:layout_width="match_parent"
  380.         android:layout_height="match_parent"></ListView>
  381. </LinearLayout>
  382.  
  383. grade_item_layout.xml
  384. ---------------------
  385. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  386.     android:layout_width="match_parent"
  387.     android:layout_height="wrap_content"
  388.     android:background="#00fff0"
  389.     android:orientation="horizontal">
  390.  
  391.     <TextView
  392.         android:id="@+id/tvItemSubject"
  393.         android:layout_width="match_parent"
  394.         android:layout_height="wrap_content"
  395.         android:layout_weight="1"
  396.         android:text="Subject Name"
  397.         android:textSize="20sp" />
  398.  
  399.     <EditText
  400.         android:id="@+id/etItemGrade"
  401.         android:layout_width="match_parent"
  402.         android:layout_height="wrap_content"
  403.         android:layout_weight="1"
  404.         android:inputType="number"
  405.         android:maxLength="3"
  406.         android:text="Grade"
  407.         android:textSize="20sp" />
  408.  
  409.     <Button
  410.         android:id="@+id/btnItemSave"
  411.         android:layout_width="match_parent"
  412.         android:layout_height="wrap_content"
  413.         android:layout_weight="1"
  414.         android:text="Save"
  415.         android:textSize="20sp" />
  416. </LinearLayout>
RAW Paste Data