Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-------- JAVA Files -------------------
- //-------------- MainActivity.java -------------
- package com.sgl.mybackendless;
- import androidx.appcompat.app.AppCompatActivity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import com.backendless.Backendless;
- import com.backendless.async.callback.AsyncCallback;
- import com.backendless.exceptions.BackendlessFault;
- public class MainActivity extends AppCompatActivity {
- Context context;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- setPointer();
- }
- private void setPointer() {
- this.context = this;
- Backendless.initApp(context, Defaults.APPLICATION_ID, Defaults.API_KEY);
- loadClasses();
- findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startActivity(new Intent(context, LoginActivity.class));
- }
- });
- findViewById(R.id.btn_register).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startActivity(new Intent(context, RegisterActivity.class));
- }
- });
- }
- private void loadClasses() {
- Class classObj = new Class();
- Courses course = new Courses();
- for(int i = 0; i < 3; i++) {
- classObj.setClassName(Defaults.CLASSES[i]);
- classObj.setClassDean(Defaults.DEANS[i]);
- classObj.setClassID((i + 1) * 10);
- Backendless.Data.of(Class.class).save(classObj, new AsyncCallback<Class>() {
- @Override
- public void handleResponse(Class response) {
- Log.i("Success", "handleResponse: Success saving " + response.getClassName());
- }
- @Override
- public void handleFault(BackendlessFault fault) {
- Log.e("Error", "Class save failed: " + fault.getMessage());
- }
- });
- for(int j = 0; j < 3; j++) {
- course.setClassID((i + 1) * 10);
- course.setCourseID(100 * (i + 1) + j);
- course.setCourseName(Defaults.COURSES[3 * i + j]);
- String semester = Math.random()*2 > 1 ? "A" : "B";
- course.setSemester(semester);
- Backendless.Data.of(Courses.class).save(course, new AsyncCallback<Courses>() {
- @Override
- public void handleResponse(Courses response) {
- Log.i("Success", "handleResponse: Success saving " + response.getCourseName());
- }
- @Override
- public void handleFault(BackendlessFault fault) {
- Log.e("Error course", "Course save failed: " + fault.getMessage());
- }
- });
- }
- }
- }
- }
- //----------------- RegisterActivity.java -----------------------------
- package com.sgl.mybackendless;
- import androidx.appcompat.app.AppCompatActivity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.Toast;
- import com.backendless.Backendless;
- import com.backendless.BackendlessUser;
- import com.backendless.async.callback.AsyncCallback;
- import com.backendless.exceptions.BackendlessFault;
- import java.util.HashMap;
- import java.util.List;
- public class RegisterActivity extends AppCompatActivity {
- EditText firstName, lastName, email, password, className;
- Context context;
- BackendlessUser newUser;
- int classId;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_register);
- setPointer();
- }
- private void setPointer() {
- this.context = this;
- findViewById(R.id.btn_register).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- registerUser();
- }
- });
- }
- private void buildUserData() {
- newUser = new BackendlessUser();
- final HashMap<String, Object> props = new HashMap<>();
- props.put("firstName", firstName.getText().toString());
- props.put("lastName", lastName.getText().toString());
- props.put("password", password.getText().toString());
- props.put("email", email.getText().toString());
- props.put("classID", classId);
- props.put("className", className.getText().toString());
- newUser.setProperties(props);
- }
- private void registerUser() {
- firstName = findViewById(R.id.input_first_name);
- lastName = findViewById(R.id.input_last_name);
- email = findViewById(R.id.input_email);
- password = findViewById(R.id.input_password);
- className = findViewById(R.id.input_class);
- classId = 9;
- new retrieveClassIdtask().execute(className.getText().toString());
- }
- private class retrieveClassIdtask extends AsyncTask<String, Void, Void> {
- @Override
- protected Void doInBackground(String... strings) {
- try {
- List<Class> classes = Backendless.Data.of(Class.class).find();
- for (Class c : classes) {
- if(c.getClassName().equals(strings[0])) {
- classId = Integer.parseInt(c.getClassID().toString());
- }
- }
- } catch (Exception e) {
- Log.e("Error", "doInBackground: " + e.getMessage());
- e.printStackTrace();
- }
- return null;
- }
- @Override
- protected void onPostExecute(Void aVoid) {
- if(classId == 9) {
- Toast.makeText(context, "Bad input - Class Name", Toast.LENGTH_LONG).show();
- } else {
- Log.i("Register Error", "onPostExecute: Class ID and name: " + classId + "; " + className.getText().toString());
- buildUserData();
- Backendless.UserService.register(newUser, new AsyncCallback<BackendlessUser>() {
- @Override
- public void handleResponse(BackendlessUser response) {
- String fullName = firstName.getText().toString() + " " + lastName.getText().toString();
- Toast.makeText(context, "Hi " + fullName + ", you are now registered!", Toast.LENGTH_SHORT).show();
- Intent intent = new Intent(context, StudentActivity.class);
- intent.putExtra("username", firstName.getText().toString());
- intent.putExtra("cId", classId);
- intent.putExtra("cName", className.getText().toString());
- Log.i("CLASS ID", "handleResponse: " + classId);
- startActivity(intent);
- }
- @Override
- public void handleFault(BackendlessFault fault) {
- Log.e("Register Error", "handleFault2: " + fault.getMessage());
- }
- });
- }
- }
- }
- }
- // ---------------- LoginActivity.com ---------------------------
- package com.sgl.mybackendless;
- import androidx.appcompat.app.AppCompatActivity;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.Toast;
- import com.backendless.Backendless;
- import com.backendless.BackendlessUser;
- import com.backendless.async.callback.AsyncCallback;
- import com.backendless.exceptions.BackendlessFault;
- import com.backendless.persistence.DataQueryBuilder;
- import java.util.List;
- import java.util.Map;
- public class LoginActivity extends AppCompatActivity {
- Context context;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login);
- setPointer();
- }
- private void setPointer() {
- this.context = this;
- findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- loginUser();
- }
- });
- findViewById(R.id.txtToRegisterPage).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- startActivity(new Intent(context, RegisterActivity.class));
- }
- });
- }
- private void loginUser() {
- String uEmail = ((EditText)findViewById(R.id.input_email)).getText().toString();
- String uPass = ((EditText)findViewById(R.id.input_password)).getText().toString();
- Backendless.UserService.login(uEmail, uPass, new AsyncCallback<BackendlessUser>() {
- @Override
- public void handleResponse(BackendlessUser response) {
- Intent intent = new Intent(context, StudentActivity.class);
- startActivity(intent);
- }
- @Override
- public void handleFault(BackendlessFault fault) {
- Toast.makeText(context, "Incorrect email or password!", Toast.LENGTH_LONG).show();
- }
- });
- }
- }
- //---------------------- StudentActivity.java ------------------------------
- package com.sgl.mybackendless;
- import androidx.appcompat.app.AppCompatActivity;
- import android.content.Context;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.ListView;
- import android.widget.TextView;
- import com.backendless.Backendless;
- import com.backendless.async.callback.AsyncCallback;
- import com.backendless.exceptions.BackendlessFault;
- import java.util.ArrayList;
- import java.util.List;
- public class StudentActivity extends AppCompatActivity {
- Context context;
- TextView titles;
- ArrayList<String> cList;
- String firstName, clName;
- ListView coursesList;
- int cId;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_student);
- setPointer();
- }
- private void setPointer() {
- // Initializing global variables
- this.context = this;
- titles = findViewById(R.id.txtTable);
- titles.setVisibility(View.INVISIBLE);
- cList = new ArrayList<>();
- Bundle extras = getIntent().getExtras();
- if(extras == null) {
- // Coming from the LoginActivity
- firstName = Backendless.UserService.CurrentUser().getProperty("firstName").toString();
- clName = Backendless.UserService.CurrentUser().getProperty("className").toString();
- cId = Integer.parseInt(Backendless.UserService.CurrentUser().getProperty("classID").toString());
- } else {
- // Coming from the RegisterActivity
- firstName = extras.getString("username");
- clName = extras.getString("cName");
- cId = extras.getInt("cId");
- }
- // Set the welcome title
- ((TextView)findViewById(R.id.txtWelcome)).setText("hey " + firstName + "\nWelcom to the " + clName + " class");
- loadData();
- }
- private void loadData() {
- /* Retrieving data from the courses table in Backendless using a non-blocking method */
- Backendless.Data.of(Courses.class).find(new AsyncCallback<List<Courses>>() {
- @Override
- public void handleResponse(List<Courses> response) {
- // Turning all data from the table to a string (done for each line of data)
- String cName, semester, finalStr;
- int courseId;
- cList.add("Course;ID;Semester");
- for (Courses course : response) {
- if(course.getClassID() == cId) {
- cName = course.getCourseName();
- courseId = course.getCourseID();
- semester = course.getSemester();
- finalStr = cName + ";" + courseId + ";" + semester;
- cList.add(finalStr);
- }
- }
- String s = cList.isEmpty() ? "You have No Courses" : "Here are your courses:";
- titles.setText(s);
- titles.setVisibility(View.VISIBLE);
- updateListView();
- }
- @Override
- public void handleFault(BackendlessFault fault) {
- Log.e("Error", "handleFault: " + fault.getMessage());
- }
- });
- }
- private void updateListView() {
- CourseAdapter courseAdapter = new CourseAdapter(context, cList);
- coursesList = findViewById(R.id.courseList);
- coursesList.setAdapter(courseAdapter);
- }
- }
- // ---------------- Defaults.java ------------------------
- package com.sgl.mybackendless;
- class Defaults {
- static final String APPLICATION_ID = "E0699EFD-6032-8AE7-FF1C-260DE5868F00";
- static final String API_KEY = "D5022513-3665-43A7-9E2B-1D9AD2FAF31A";
- static final String[] CLASSES = {"Applications", "Mathematics", "ComputerGraphics"};
- static final String[] COURSES = {"Java", "Android", "Swift", "Linear Algebra", "Combinatorics", "Statistics", "Projection", "Camera", "Shadowing"};
- static final String[] DEANS = {"Zeev Mindali", "Daniel Braudo", "Eran Segal"};
- }
- //------------------- CourseAdapter.java ------------------------
- package com.sgl.mybackendless;
- import android.content.Context;
- import android.graphics.Color;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.TextView;
- import java.util.HashMap;
- import java.util.List;
- public class CourseAdapter extends BaseAdapter {
- private List courses;
- private Context context;
- TextView courseId;
- TextView courseName;
- TextView semester;
- public CourseAdapter(Context context, List coursesList) {
- this.context = context;
- this.courses = coursesList;
- }
- @Override
- public int getCount() {
- return courses.size();
- }
- @Override
- public Object getItem(int position) {
- return (getCount() > 0) ? courses.get(position) : null;
- }
- @Override
- public long getItemId(int position) {
- return 0;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final View singleView = LayoutInflater.from(context).inflate(R.layout.course_layout, null);
- courseId = singleView.findViewById(R.id.courseID);
- courseName = singleView.findViewById(R.id.courseName);
- semester = singleView.findViewById(R.id.semester);
- String[] values = ((String)courses.get(position)).split(";");
- if(values.length != 3) {
- Log.e("Error", "getView: " + " failed to parse course details!" );
- } else {
- courseId.setText(values[0]);
- courseName.setText(values[1]);
- semester.setText(values[2]);
- }
- if(position == 0) {
- courseName.setTextColor(Color.YELLOW);
- courseId.setTextColor(Color.YELLOW);
- semester.setTextColor(Color.YELLOW);
- courseName.setBackgroundColor(0xFFFF0000);
- courseId.setBackgroundColor(0xFFFF0000);
- semester.setBackgroundColor(0xFFFF0000);
- }
- return singleView;
- }
- }
- // ----------------------- Class.java (generated from Backendless) ----------------------------
- package com.sgl.mybackendless;
- import com.backendless.Backendless;
- import com.backendless.BackendlessUser;
- import com.backendless.async.callback.AsyncCallback;
- import com.backendless.persistence.*;
- import com.backendless.geo.GeoPoint;
- import java.util.List;
- import java.util.Date;
- public class Class
- {
- private String objectId;
- private Date created;
- private Date updated;
- private Integer classID;
- private String ClassDean;
- private String ownerId;
- private String ClassName;
- public String getObjectId()
- {
- return objectId;
- }
- public Date getCreated()
- {
- return created;
- }
- public Date getUpdated()
- {
- return updated;
- }
- public Integer getClassID()
- {
- return classID;
- }
- public void setClassID( Integer classID )
- {
- this.classID = classID;
- }
- public String getClassDean()
- {
- return ClassDean;
- }
- public void setClassDean( String ClassDean )
- {
- this.ClassDean = ClassDean;
- }
- public String getOwnerId()
- {
- return ownerId;
- }
- public String getClassName()
- {
- return ClassName;
- }
- public void setClassName( String ClassName )
- {
- this.ClassName = ClassName;
- }
- public Class save()
- {
- return Backendless.Data.of( Class.class ).save( this );
- }
- public void saveAsync( AsyncCallback<Class> callback )
- {
- Backendless.Data.of( Class.class ).save( this, callback );
- }
- public Long remove()
- {
- return Backendless.Data.of( Class.class ).remove( this );
- }
- public void removeAsync( AsyncCallback<Long> callback )
- {
- Backendless.Data.of( Class.class ).remove( this, callback );
- }
- public static Class findById( String id )
- {
- return Backendless.Data.of( Class.class ).findById( id );
- }
- public static void findByIdAsync( String id, AsyncCallback<Class> callback )
- {
- Backendless.Data.of( Class.class ).findById( id, callback );
- }
- public static Class findFirst()
- {
- return Backendless.Data.of( Class.class ).findFirst();
- }
- public static void findFirstAsync( AsyncCallback<Class> callback )
- {
- Backendless.Data.of( Class.class ).findFirst( callback );
- }
- public static Class findLast()
- {
- return Backendless.Data.of( Class.class ).findLast();
- }
- public static void findLastAsync( AsyncCallback<Class> callback )
- {
- Backendless.Data.of( Class.class ).findLast( callback );
- }
- public static List<Class> find( DataQueryBuilder queryBuilder )
- {
- return Backendless.Data.of( Class.class ).find( queryBuilder );
- }
- public static void findAsync( DataQueryBuilder queryBuilder, AsyncCallback<List<Class>> callback )
- {
- Backendless.Data.of( Class.class ).find( queryBuilder, callback );
- }
- }
- //--------------- Courses.java (generated from Backendless) -------------
- package com.sgl.mybackendless;
- import com.backendless.Backendless;
- import com.backendless.BackendlessUser;
- import com.backendless.async.callback.AsyncCallback;
- import com.backendless.persistence.*;
- import com.backendless.geo.GeoPoint;
- import java.util.List;
- import java.util.Date;
- public class Courses
- {
- private String courseName;
- private String semester;
- private Date created;
- private Integer classID;
- private String ownerId;
- private Date updated;
- private Integer courseID;
- private String objectId;
- public String getCourseName()
- {
- return courseName;
- }
- public void setCourseName( String courseName )
- {
- this.courseName = courseName;
- }
- public String getSemester()
- {
- return semester;
- }
- public void setSemester( String semester )
- {
- this.semester = semester;
- }
- public Date getCreated()
- {
- return created;
- }
- public Integer getClassID()
- {
- return classID;
- }
- public void setClassID( Integer classID )
- {
- this.classID = classID;
- }
- public String getOwnerId()
- {
- return ownerId;
- }
- public Date getUpdated()
- {
- return updated;
- }
- public Integer getCourseID()
- {
- return courseID;
- }
- public void setCourseID( Integer courseID )
- {
- this.courseID = courseID;
- }
- public String getObjectId()
- {
- return objectId;
- }
- public Courses save()
- {
- return Backendless.Data.of( Courses.class ).save( this );
- }
- public void saveAsync( AsyncCallback<Courses> callback )
- {
- Backendless.Data.of( Courses.class ).save( this, callback );
- }
- public Long remove()
- {
- return Backendless.Data.of( Courses.class ).remove( this );
- }
- public void removeAsync( AsyncCallback<Long> callback )
- {
- Backendless.Data.of( Courses.class ).remove( this, callback );
- }
- public static Courses findById( String id )
- {
- return Backendless.Data.of( Courses.class ).findById( id );
- }
- public static void findByIdAsync( String id, AsyncCallback<Courses> callback )
- {
- Backendless.Data.of( Courses.class ).findById( id, callback );
- }
- public static Courses findFirst()
- {
- return Backendless.Data.of( Courses.class ).findFirst();
- }
- public static void findFirstAsync( AsyncCallback<Courses> callback )
- {
- Backendless.Data.of( Courses.class ).findFirst( callback );
- }
- public static Courses findLast()
- {
- return Backendless.Data.of( Courses.class ).findLast();
- }
- public static void findLastAsync( AsyncCallback<Courses> callback )
- {
- Backendless.Data.of( Courses.class ).findLast( callback );
- }
- public static List<Courses> find( DataQueryBuilder queryBuilder )
- {
- return Backendless.Data.of( Courses.class ).find( queryBuilder );
- }
- public static void findAsync( DataQueryBuilder queryBuilder, AsyncCallback<List<Courses>> callback )
- {
- Backendless.Data.of( Courses.class ).find( queryBuilder, callback );
- }
- }
- //////////////////// Layout files ------------------------------
- //----------------- activity_main.xml -------------------------
- <?xml version="1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
- <ScrollView
- android:id="@+id/scrollView2"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#DD3131"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingStart="18dp"
- android:paddingTop="24dp"
- android:paddingEnd="24dp">
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:gravity="center"
- android:text="@string/mindali_university_of_apps"
- android:textColor="#FFFFFF"
- android:textSize="44sp" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <ImageView
- android:id="@+id/pic1"
- android:layout_width="0dp"
- android:layout_height="120dp"
- android:layout_gravity="center"
- android:layout_marginTop="24dp"
- android:layout_marginBottom="24dp"
- android:layout_weight="1"
- android:alpha="0.6"
- android:contentDescription="@string/site_logo"
- android:src="@drawable/diploma"
- android:tint="#FEFFFFFF" />
- </LinearLayout>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:gravity="center"
- android:text="@string/welcome"
- android:textColor="#FFFFFF"
- android:textSize="24sp" />
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="12dp"
- android:layout_marginBottom="12dp"
- android:gravity="center"
- android:text="@string/join"
- android:textColor="#FFFFFF"
- android:textSize="20sp" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal">
- <Button
- android:id="@+id/btn_login"
- style="@style/Widget.AppCompat.Button.Borderless.Colored"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="24dp"
- android:layout_marginEnd="12dp"
- android:layout_marginBottom="24dp"
- android:layout_weight="1"
- android:background="#5E910707"
- android:padding="12dp"
- android:text="@string/login"
- android:textColor="#FFFFFF"
- android:textSize="18sp" />
- <Button
- android:id="@+id/btn_register"
- style="@style/Widget.AppCompat.Button.Borderless.Colored"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginStart="12dp"
- android:layout_marginTop="24dp"
- android:layout_marginBottom="24dp"
- android:layout_weight="1"
- android:background="#5E910707"
- android:padding="12dp"
- android:text="@string/register"
- android:textColor="#FFFFFF"
- android:textSize="18sp" />
- </LinearLayout>
- </LinearLayout>
- </ScrollView>
- </androidx.constraintlayout.widget.ConstraintLayout>
- //------------------------ activity_login.xml ----------------------------
- <?xml version="1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
- <ScrollView
- android:id="@+id/scrollView2"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#DD3131"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingStart="24dp"
- android:paddingTop="56dp"
- android:paddingEnd="24dp">
- <ImageView
- android:id="@+id/logo"
- android:layout_width="wrap_content"
- android:layout_height="96dp"
- android:layout_gravity="center"
- android:layout_marginBottom="24dp"
- android:layout_marginTop="24dp"
- android:alpha="0.6"
- android:contentDescription="@string/site_logo"
- android:src="@drawable/logo" />
- <!-- Email Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="24dp"
- android:gravity="left"
- android:text="Email"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <EditText
- android:id="@+id/input_email"
- style="@style/Base.Widget.MaterialComponents.TextInputEditText"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:inputType="textEmailAddress"
- android:textAppearance="@style/TextAppearance.AppCompat.Medium"
- android:textColor="#FFFFFF" />
- <!-- Password Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="24dp"
- android:gravity="left"
- android:text="Password"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <EditText
- android:id="@+id/input_password"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textColor="#FFFFFF"
- android:inputType="textPassword" />
- <Button
- android:id="@+id/btn_login"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="24dp"
- android:layout_marginBottom="24dp"
- android:background="#5E910707"
- android:padding="12dp"
- android:text="@string/login"
- android:textColor="#FFFFFF"
- android:textSize="18sp" />
- <TextView
- android:id="@+id/txtToRegisterPage"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="24dp"
- android:gravity="center"
- android:text="@string/no_account_yet_create_one"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- </LinearLayout>
- </ScrollView>
- </androidx.constraintlayout.widget.ConstraintLayout>
- //--------------------- activity_register.xml ----------------------------
- <?xml version="1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
- <ScrollView
- android:id="@+id/scrollView2"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#DD3131"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:paddingStart="24dp"
- android:paddingTop="56dp"
- android:paddingEnd="24dp">
- <ImageView
- android:id="@+id/logo"
- android:layout_width="wrap_content"
- android:layout_height="96dp"
- android:layout_gravity="center"
- android:layout_marginTop="12dp"
- android:layout_marginBottom="12dp"
- android:alpha="0.6"
- android:contentDescription="@string/site_logo"
- android:src="@drawable/pic1" />
- <!-- First Name Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="6dp"
- android:gravity="start"
- android:text="@string/first_name"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <!-- First Name Input -->
- <EditText
- android:id="@+id/input_first_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:autofillHints="@string/email"
- android:contentDescription="@string/email"
- android:inputType="textEmailAddress"
- android:labelFor="@id/input_last_name"
- android:textColor="#FFFFFF" />
- <!-- Last Name Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="6dp"
- android:gravity="start"
- android:text="@string/last_name"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <!-- Last Name Input -->
- <EditText
- android:id="@+id/input_last_name"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:autofillHints="@string/email"
- android:contentDescription="@string/email"
- android:ems="10"
- android:inputType="textEmailAddress"
- android:labelFor="@id/input_first_name"
- android:textColor="#FFFFFF" />
- <!-- Email Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="6dp"
- android:gravity="start"
- android:text="@string/email"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <!-- Email Input -->
- <EditText
- android:id="@+id/input_email"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:autofillHints="@string/email"
- android:contentDescription="@string/email"
- android:ems="10"
- android:inputType="textEmailAddress"
- android:labelFor="@id/input_class"
- android:textColor="#FFFFFF" />
- <!-- Password Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="6dp"
- android:gravity="start"
- android:text="@string/password"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <!-- Password Input -->
- <EditText
- android:id="@+id/input_password"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:autofillHints="@string/password"
- android:textColor="#FFFFFF"
- android:inputType="textPassword"
- android:labelFor="@id/input_email" />
- <!-- Class Label -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="6dp"
- android:gravity="start"
- android:text="@string/course"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- <!-- Class Input -->
- <EditText
- android:id="@+id/input_class"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:autofillHints="@string/course"
- android:inputType="text"
- android:textColor="#FFFFFF"
- android:labelFor="@id/input_password" />
- <Button
- android:id="@+id/btn_register"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="12dp"
- android:layout_marginBottom="12dp"
- android:background="#5E910707"
- android:padding="12dp"
- android:text="@string/register"
- android:textColor="#FFFFFF"
- android:textSize="18sp" />
- <TextView
- android:id="@+id/txtToLogin"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="24dp"
- android:gravity="center"
- android:text="@string/already_registered"
- android:textColor="#FFFFFF"
- android:textSize="16sp" />
- </LinearLayout>
- </ScrollView>
- </androidx.constraintlayout.widget.ConstraintLayout>
- //----------------------- activity_student.xml -------------------
- <?xml version="1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#DD3131"
- android:orientation="vertical"
- android:paddingStart="18dp"
- android:paddingTop="24dp"
- android:paddingEnd="24dp">
- <TextView
- android:id="@+id/txtWelcome"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:gravity="center"
- android:text="@string/student_welcome"
- android:textColor="#FFFFFF"
- android:textSize="32sp" />
- <TextView
- android:id="@+id/txtTable"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:gravity="start"
- android:text="@string/student_courses"
- android:textColor="#FFFFFF"
- android:textSize="24sp" />
- <ListView
- android:id="@+id/courseList"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_marginStart="20dp"
- android:layout_marginEnd="20dp"
- android:layout_marginTop="40dp"
- android:layout_marginBottom="60dp"/>
- </LinearLayout>
- </androidx.constraintlayout.widget.ConstraintLayout>
- //--------------------------------- course_layout.xml --------------------------
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:padding="15dp">
- <ImageView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/course"
- android:layout_margin="10dp"
- android:id="@+id/imgDevice"
- android:contentDescription="@string/course_pic" />
- <TextView
- android:id="@+id/courseName"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginStart="30dp"
- android:layout_weight="1"
- android:text="@string/mock_data"
- android:textColor="#fff"
- android:textSize="18sp"
- android:textStyle="bold" />
- <TextView
- android:id="@+id/courseID"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginStart="30dp"
- android:layout_weight="1"
- android:text="@string/course_id"
- android:textColor="#fff"
- android:textSize="18sp"
- android:textStyle="bold" />
- <TextView
- android:id="@+id/semester"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="0.3"
- android:textStyle="bold"
- android:textColor="#fff"
- android:layout_gravity="center_vertical"
- android:textSize="18sp"
- android:paddingStart="20dp"
- android:paddingEnd="0dp"
- android:layout_marginStart="20dp"
- android:text="@string/semester"/>
- </LinearLayout>
Add Comment
Please, Sign In to add comment