Skip to content

Instantly share code, notes, and snippets.

@SimonPeter1909
Created May 31, 2017 15:31
Show Gist options
  • Save SimonPeter1909/d70be328dd6d9b099a8a96454922432f to your computer and use it in GitHub Desktop.
Save SimonPeter1909/d70be328dd6d9b099a8a96454922432f to your computer and use it in GitHub Desktop.
I have created the code in my way. There will be many simple ways to create a code.So, Just ignore it and try to understand my code.
package trickandroid.fulllogin;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.firebase.ui.database.FirebaseListAdapter;
import com.github.paolorotolo.expandableheightlistview.ExpandableHeightListView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import static trickandroid.fulllogin.R.id.conRaCaNumET;
public class DetailsActivity extends AppCompatActivity {
private static final String TAG = "DetailsActivity";
//variables
private TextView nameTV,numberTV, areaTV, doorNumTV,curAreaTV,curNumTV;
private String userID, key, areaName,name,number,due;
private ExpandableHeightListView expandableListView;
private Button editBTN,shiftBTN,disBTN, okBTN, cancelBTN;
private EditText detailNumberET, detailNameET, dueET, doorET, phoneET, aatharET, rationET, doorNumET;
private LinearLayout detailLL, buttonLL, editBTNLL, doorNumLL,curNumLL,curAreaLL;
private Spinner addConSpinner;
private String newDoorNum;
//Firebase Variables
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private FirebaseDatabase firebaseDatabase;
private DatabaseReference databaseReference;
private DatabaseReference mdata;
private DatabaseReference disconnected;
private DatabaseReference connection;
private DatabaseReference areaList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
userID = user.getUid();
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference();
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Log.d(TAG, "onAuthStateChanged: " + userID);
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
areaList = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("AreaList");
connection = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("Connection List");
mdata = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("Connection Detail");
disconnected = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("Disconnected");
due = getIntent().getExtras().getString("due");
key = getIntent().getExtras().getString("key");
Log.d(TAG, "onCreate: " + key);
areaName = getIntent().getExtras().getString("areaname");
Log.d(TAG, "onCreate: " + areaName);
name = getIntent().getExtras().getString("name");
number = getIntent().getExtras().getString("number");
nameTV = (TextView) findViewById(R.id.nameTV);
Log.d(TAG, "onCreate: " + name);
nameTV.setText(name);
numberTV = (TextView) findViewById(R.id.numberTV);
Log.d(TAG, "onCreate: " + number);
numberTV.setText(number);
areaTV = (TextView) findViewById(R.id.areaTV);
areaTV.setText(areaName);
addConSpinner = (Spinner) findViewById(R.id.spinnerArea);
final FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(DetailsActivity.this,
String.class,
android.R.layout.simple_list_item_1,
areaList) {
@Override
protected void populateView(final View v, final String name, int position) {
TextView textView = (TextView) v.findViewById(android.R.id.text1);
textView.setText(name);
}
};
addConSpinner.setAdapter(firebaseListAdapter);
expandableListView = (ExpandableHeightListView) findViewById(R.id.expandable_listview);
// This actually does the magic
expandableListView.setExpanded(true);
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
showData(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
editBTN = (Button) findViewById(R.id.editBTN);
shiftBTN = (Button) findViewById(R.id.shiftBTN);
disBTN = (Button) findViewById(R.id.disconnectBTN);
curAreaTV = (TextView) findViewById(R.id.CurAreaTV);
curAreaTV.setText(areaName);
curNumTV = (TextView) findViewById(R.id.CurNumTV);
curNumTV.setText(number);
doorNumTV = (TextView) findViewById(R.id.doorNUmTV);
doorNumET = (EditText) findViewById(R.id.doorNumET);
detailNumberET = (EditText) findViewById(R.id.detailNumberET);
detailNameET = (EditText) findViewById(R.id.detailNameET);
dueET = (EditText) findViewById(R.id.dueET);
doorET = (EditText) findViewById(R.id.detailDoorET);
phoneET = (EditText) findViewById(R.id.conPhNumET);
aatharET = (EditText) findViewById(R.id.conAthrNumET);
rationET = (EditText) findViewById(conRaCaNumET);
detailLL = (LinearLayout) findViewById(R.id.detailLL);
buttonLL = (LinearLayout) findViewById(R.id.buttonLL);
editBTNLL = (LinearLayout) findViewById(R.id.editBTNLL);
doorNumLL = (LinearLayout) findViewById(R.id.doorNUMLL);
curAreaLL = (LinearLayout) findViewById(R.id.curAreaLL);
curNumLL = (LinearLayout) findViewById(R.id.curNumLL);
disBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
okBTN = (Button) findViewById(R.id.detailOKBTN);
cancelBTN = (Button) findViewById(R.id.detailCancelBTN);
shiftBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
shiftBUTTON();
}
});
okBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (detailLL.getVisibility()==View.VISIBLE){
final String detailDue = dueET.getText().toString();
String doorNum = doorET.getText().toString();
doorNum = "Door Number = " + doorNum;
String conName = detailNameET.getText().toString();
conName = "Name = " + conName;
final String name = detailNameET.getText().toString();
String phoneNum = phoneET.getText().toString();
phoneNum = "Phone Number = " + phoneNum;
String aadharNum = aatharET.getText().toString();
aadharNum = "Aadhar Number = " + aadharNum;
String rationNum = rationET.getText().toString();
rationNum = "Ration Number = " + rationNum;
if (name.isEmpty()){
toast(getString(R.string.enter_name));
} else if (detailDue.isEmpty()){
toast(getString(R.string.enter_due_amount));
} else if (doorNum.isEmpty()){
toast(getString(R.string.enter_door_number));
} else if (phoneNum.isEmpty()){
toast(getString(R.string.enter_phone_number));
} else if(aadharNum.isEmpty()){
toast(getString(R.string.enter_aathar_number));
} else if (rationNum.isEmpty()){
toast(getString(R.string.enter_ration_number));
} else {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(DetailsActivity.this);
// Setting Dialog Message
alertDialog.setMessage(R.string.yes_dialouge);
// Setting Positive "Yes" Button
final String finalConName = conName;
final String finalDoorNum = doorNum;
final String finalPhoneNum = phoneNum;
final String finalAadharNum = aadharNum;
final String finalRationNum = rationNum;
alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
ConnectionInformation cInfo = new ConnectionInformation(detailDue, areaName,number, finalDoorNum, finalConName, finalPhoneNum, finalAadharNum, finalRationNum);
mdata.child(areaName).child(key).setValue(cInfo);
Connections connect = new Connections(number, name, detailDue);
connection.child(areaName).child(key).setValue(connect);
toast(getString(R.string.edited_successfully));
nameTV.setText(name);
cancelMethod();
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
} else {
final String newNum = detailNumberET.getText().toString();
newDoorNum = "Door Number = " + doorNumET.getText().toString();
final String door =doorNumET.getText().toString();
final String mAreaName = addConSpinner.getSelectedItem().toString();
if (newNum.isEmpty()){
toast(getString(R.string.enter_new_number));
} else {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(DetailsActivity.this);
// Setting Dialog Message
alertDialog.setMessage(R.string.shift_dialouge);
// Setting Positive "Yes" Button
alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()){
if (areaName.equals(mAreaName)){
ConnectionInformation cInfor = new ConnectionInformation();
cInfor.setPhoneNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getPhoneNum());
cInfor.setAadharNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getAadharNum());
cInfor.setRationNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getRationNum());
ConnectionInformation info = new ConnectionInformation(due,mAreaName,newNum,newDoorNum,name,cInfor.getPhoneNum(),cInfor.getAadharNum(),cInfor.getRationNum());
mdata.child(mAreaName).child(key).setValue(info);
Connections connect = new Connections(newNum,name,due);
connection.child(mAreaName).child(key).setValue(connect);
toast(getString(R.string.shifted_successfully));
areaTV.setText(mAreaName);
numberTV.setText(newNum);
doorNumTV.setText(door);
cancelMethod();
} else {
ConnectionInformation cInfor = new ConnectionInformation();
cInfor.setPhoneNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getPhoneNum());
cInfor.setAadharNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getAadharNum());
cInfor.setRationNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getRationNum());
ConnectionInformation info = new ConnectionInformation(due,mAreaName,newNum,newDoorNum,name,cInfor.getPhoneNum(),cInfor.getAadharNum(),cInfor.getRationNum());
mdata.child(mAreaName).child(key).setValue(info);
Connections connect = new Connections(newNum,name,due);
connection.child(mAreaName).child(key).setValue(connect);
areaTV.setText(mAreaName);
numberTV.setText(newNum);
doorNumTV.setText(door);
toast(getString(R.string.shifted_successfully));
cancelMethod();
Intent i = new Intent(DetailsActivity.this,DisconnectActivity.class);
i.putExtra("key",key);
i.putExtra("oldarea",areaName);
i.putExtra("name",name);
i.putExtra("oldnumber",number);
i.putExtra("newArea",mAreaName);
i.putExtra("newNumber",newNum);
startActivity(i);
moveFirebaseRecord(mdata.child(areaName).child(key),disconnected.child(areaName).child(key));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
}
}
});
cancelBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelMethod();
}
});
editBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editMethod();
}
});
}
private void moveFirebaseRecord(DatabaseReference child, final DatabaseReference child1) {
child.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
child1.setValue(dataSnapshot.getValue(), new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null)
{
toast(getString(R.string.error));
}
else
{
toast(getString(R.string.shifted_successfully));
}
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void shiftBUTTON() {
curAreaLL.setVisibility(View.VISIBLE);
curNumLL.setVisibility(View.VISIBLE);
areaTV.setVisibility(View.GONE);
addConSpinner.setVisibility(View.VISIBLE);
doorNumLL.setVisibility(View.VISIBLE);
expandableListView.setVisibility(View.GONE);
numberTV.setVisibility(View.GONE);
detailNumberET.setVisibility(View.VISIBLE);
editBTNLL.setVisibility(View.GONE);
buttonLL.setVisibility(View.VISIBLE);
}
private void editMethod() {
nameTV.setVisibility(View.GONE);
detailNameET.setVisibility(View.VISIBLE);
expandableListView.setVisibility(View.GONE);
detailLL.setVisibility(View.VISIBLE);
editBTNLL.setVisibility(View.GONE);
buttonLL.setVisibility(View.VISIBLE);
}
private void cancelMethod() {
curAreaLL.setVisibility(View.GONE);
curNumLL.setVisibility(View.GONE);
doorNumET.setVisibility(View.GONE);
doorNumTV.setVisibility(View.VISIBLE);
areaTV.setVisibility(View.VISIBLE);
addConSpinner.setVisibility(View.GONE);
detailNumberET.setVisibility(View.GONE);
numberTV.setVisibility(View.VISIBLE);
nameTV.setVisibility(View.VISIBLE);
detailNameET.setVisibility(View.GONE);
expandableListView.setVisibility(View.VISIBLE);
detailLL.setVisibility(View.GONE);
editBTNLL.setVisibility(View.VISIBLE);
buttonLL.setVisibility(View.GONE);
}
private void showData(DataSnapshot dataSnapshot) {
if (expandableListView.getVisibility()==View.VISIBLE) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
ConnectionInformation cInfo = new ConnectionInformation();
cInfo.setDoorNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getDoorNum());
cInfo.setPhoneNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getPhoneNum());
cInfo.setAadharNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getAadharNum());
cInfo.setRationNum(ds.child(userID).child("Connection Detail").child(areaName).child(key).getValue(ConnectionInformation.class).getRationNum());
ArrayList<String> users = new ArrayList<>();
users.add(cInfo.getDoorNum());
users.add(cInfo.getPhoneNum());
users.add(cInfo.getAadharNum());
users.add(cInfo.getRationNum());
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, users);
expandableListView.setAdapter(adapter);
}
}
}
public void toast(String m) {
Toast.makeText(this, m, Toast.LENGTH_SHORT).show();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment