This is my Final Year Project Which I tend to submitt in couple of weeks. I'm a starter and trying to learn the java //here is the adapter I created //In here I'm calling the layout where data will retrieved
public class UserListAdapter extends RecyclerView.Adapter< UserListAdapter.UserListViewHolder> {
ArrayList< UserObject > userList;
public UserListAdapter(ArrayList< UserObject > userList) {
this.userList = userList;
}
@NonNull
@Override
public UserListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
View layoutView= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user,null,false);
RecyclerView.LayoutParams lp= new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
layoutView.setLayoutParams(lp);
UserListViewHolder rcv= new UserListViewHolder(layoutView);
return rcv;
}
@Override
public void onBindViewHolder (@NonNull UserListViewHolder holder , int position){
holder.mName.setText(userList.get(position).getName());
holder.mPhone.setText(userList.get(position).getPhone());
}
@Override
public int getItemCount(){
return userList.size();
}
public class UserListViewHolder extends RecyclerView.ViewHolder{
public TextView mName,mPhone;
public UserListViewHolder(View view){
super(view);
mName= view.findViewById(R.id.name);
mPhone= view.findViewById(R.id.phone);
}
}
}
// here is the object I created
public class UserObject {
String name,phone;
public UserObject(String name, String phone){
this.name = name;
this.phone = phone;
}
public String getPhone() { return phone; }
public String getName() { return name; }
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
// here is my Functional Code
public class FindUserActivity extends AppCompatActivity {
private RecyclerView mUserList;
private RecyclerView.Adapter mUserListAdapter;
private RecyclerView.LayoutManager mUserListLayoutManager;
ArrayList<UserObject> userList ,contactList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_user);
contactList = new ArrayList<>();
userList = new ArrayList<>();
initializeRecyclerView();
getContactList();
}
private void getContactList(){
String ISOPrefix = getCountryISO();
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null );
while (phones.moveToNext()){
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phone = phone.replace(" ","");
phone = phone.replace("-","");
phone = phone.replace("(","");
phone = phone.replace(")","");
if (!String.valueOf(phone.charAt(0)).equals("+"))
phone = ISOPrefix + phone;
UserObject mContact = new UserObject(name,phone);
userList.add(mContact);
getUserDetails(mContact);
}
}
@SuppressLint("WrongConstant")
private void getUserDetails(UserObject mContact) {
DatabaseReference mUserDB = FirebaseDatabase.getInstance().getReference().child("user");
Query query = mUserDB.orderByChild("phone").equalTo(mContact.getPhone());
mUserDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
String phone = "", name = "";
for (DataSnapshot childSnapshot : snapshot.getChildren()) {
if (childSnapshot.child("phone").getValue() != null)
phone = childSnapshot.child("phone").getValue().toString();
if (childSnapshot.child("name").getValue() != null)
name = childSnapshot.child("name").getValue().toString();
UserObject mUser = new UserObject(name, phone);
userList.add(mUser);
mUserListAdapter.notifyDataSetChanged();
return ;
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
private String getCountryISO() {
String iso = null;
TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(getApplicationContext().TELEPHONY_SERVICE);
if (telephonyManager.getNetworkCountryIso() != null)
if (!telephonyManager.getNetworkCountryIso().toString().equals(""))
iso = telephonyManager.getNetworkCountryIso().toString();
return CountryToPhonePrefix.getPhone(iso);
}
@SuppressLint("WrongConstant")
private void initializeRecyclerView() {
mUserList= findViewById(R.id.userList);
mUserList.setNestedScrollingEnabled(false);
mUserList.setHasFixedSize(false);
mUserListLayoutManager= new LinearLayoutManager(getApplicationContext(), LinearLayout.VERTICAL,false);
mUserList.setLayoutManager(mUserListLayoutManager);
mUserListAdapter= new UserListAdapter(userList);
mUserList.setAdapter(mUserListAdapter);
}
}
// This is build.gradle and I call all the dependencies which is neccessary
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.example.whatsapp"
minSdkVersion 16
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
//noinspection GradleCompatible
implementation 'com.android.support:design:1.1.0'
implementation "androidx.recyclerview:recyclerview:1.1.0"
// For control over item selection of both touch and mouse driven selection
implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
implementation 'com.google.firebase:firebase-core:16.0.5'
implementation 'com.google.firebase:firebase-auth:16.0.5'
implementation 'com.google.firebase:firebase-database:16.0.5'
implementation 'com.firebaseui:firebase-ui-database:4.2.1'
//implementation 'com.google.firebase:firebase-database:19.3.1'
//implementation 'com.github.bumptech.glide:glide:4.11.0'
//annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}