patternjavaMinor
Login activity in Android
Viewed 0 times
activityloginandroid
Problem
This is a complete login activity class.
What I need reviewed:
```
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.imaadv.leaynik.api.API;
import com.imaadv.leaynik.api.ConnectionExector.HTTPResponse;
import com.imaadv.leaynik.api.ConnectionExector.ResponseType;
import com.imaadv.leaynik.api.ConnectionExector.onHttpRequestListener;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.imaadv.leaynik.api.JsonParsing;
import com.imaadv.leaynik.api.MySingleton;
import com.imaadv.leaynik.defs.AppConstants;
import com.imaadv.leaynik.defs.userdata;
import com.imaadv.leaynik.R;
import java.util.HashMap;
import java.util.Map;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnCheckedChanged;
import butterknife.OnClick;
public class LoginActivity extends AppCompatActivity {
private stati
What I need reviewed:
- I need simplify my code as much as possible.
- Is it wise to use the butterknife library, or is the normal way better?
- Hide keyboard when user touches out away from edit text, and when selecting "login."
- Best practise for volley library. Should I use it individual in each class (login, sign up) or I should make a general function in an API class?
```
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.imaadv.leaynik.api.API;
import com.imaadv.leaynik.api.ConnectionExector.HTTPResponse;
import com.imaadv.leaynik.api.ConnectionExector.ResponseType;
import com.imaadv.leaynik.api.ConnectionExector.onHttpRequestListener;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.imaadv.leaynik.api.JsonParsing;
import com.imaadv.leaynik.api.MySingleton;
import com.imaadv.leaynik.defs.AppConstants;
import com.imaadv.leaynik.defs.userdata;
import com.imaadv.leaynik.R;
import java.util.HashMap;
import java.util.Map;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnCheckedChanged;
import butterknife.OnClick;
public class LoginActivity extends AppCompatActivity {
private stati
Solution
it would be a better approach if you parse the data received in form of object via different method and you may also put these methods in a seperate class so they can be used for other activities needing the same adapter class
//This method will get data from the web api
private void getData(){
//Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);
Log.i("i m in","getdata()");
//Creating a json array request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,Config.DATA_URL,null,
new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
Log.i("i m in","respinse()");
loading.dismiss();
Log.d(String.valueOf(response),"response");
parseData(response);
Log.d(String.valueOf(response),"check it");
//calling method to parse json array
}},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(String.valueOf(error),"error");
}
});
//Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(jsonObjectRequest);
}
private void parseData(JSONObject object){
try {
JSONObject data=object.getJSONObject("response");
Log.d(String.valueOf(data),"data in response");
JSONArray array= data.getJSONArray("docs");
Log.d(String.valueOf(array.length()),"JSON ARRAY");
for(int i = 0; i<array.length(); i++)
{
JSONObject json = null;
json = array.getJSONObject(Integer.parseInt(String.valueOf(i)));
JavaBean superHero=new JavaBean();
//getter and setter method class
superHero.setTitle(json.getString(TAG_TITLE));
// add it to array list finally
listSuperHeroes.add(superHero);
}
} catch (JSONException e) {e.printStackTrace();}
//Finally initializing our adapter
adapter = new CardAdapter(this,listSuperHeroes);
//Adding adapter to recyclerview
recyclerView.setAdapter(adapter);
}Code Snippets
//This method will get data from the web api
private void getData(){
//Showing a progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);
Log.i("i m in","getdata()");
//Creating a json array request
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,Config.DATA_URL,null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("i m in","respinse()");
loading.dismiss();
Log.d(String.valueOf(response),"response");
parseData(response);
Log.d(String.valueOf(response),"check it");
//calling method to parse json array
}},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(String.valueOf(error),"error");
}
});
//Creating request queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(jsonObjectRequest);
}
private void parseData(JSONObject object){
try {
JSONObject data=object.getJSONObject("response");
Log.d(String.valueOf(data),"data in response");
JSONArray array= data.getJSONArray("docs");
Log.d(String.valueOf(array.length()),"JSON ARRAY");
for(int i = 0; i<array.length(); i++)
{
JSONObject json = null;
json = array.getJSONObject(Integer.parseInt(String.valueOf(i)));
JavaBean superHero=new JavaBean();
//getter and setter method class
superHero.setTitle(json.getString(TAG_TITLE));
// add it to array list finally
listSuperHeroes.add(superHero);
}
} catch (JSONException e) {e.printStackTrace();}
//Finally initializing our adapter
adapter = new CardAdapter(this,listSuperHeroes);
//Adding adapter to recyclerview
recyclerView.setAdapter(adapter);
}Context
StackExchange Code Review Q#106114, answer score: 3
Revisions (0)
No revisions yet.