Created
May 31, 2017 15:31
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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