diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser new file mode 100644 index 0000000..6aee837 Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser new file mode 100644 index 0000000..72280fa Binary files /dev/null and b/.idea/caches/gradle_models.ser differ diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..15a15b2 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 7ac24c7..f43d428 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,6 +3,9 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml index d3dc902..102820f 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,6 +2,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index ed34f61..2c0a730 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,14 +1,15 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 26 + compileSdkVersion 29 defaultConfig { applicationId "info.androidhive.rxjavasearch" - minSdkVersion 16 - targetSdkVersion 26 + minSdkVersion 26 + targetSdkVersion 29 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + multiDexEnabled true } buildTypes { release { @@ -16,37 +17,43 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:26.1.0' - implementation 'com.android.support.constraint:constraint-layout:1.0.2' - implementation 'com.android.support:design:26.1.0' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' - - implementation 'com.android.support:recyclerview-v7:26.1.0' + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.google.android.material:material:1.0.0' - implementation 'io.reactivex.rxjava2:rxjava:2.1.9' - implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' + implementation 'androidx.recyclerview:recyclerview:1.0.0' - compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' + implementation 'io.reactivex.rxjava2:rxjava:2.2.7' + implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' - // butter knife - implementation "com.jakewharton:butterknife:8.8.1" - annotationProcessor "com.jakewharton:butterknife-compiler:8.8.1" + implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' + //implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' + implementation 'com.jakewharton.rxbinding3:rxbinding-material:3.0.0-alpha2' + implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0-alpha2' + implementation "com.jakewharton:butterknife:10.1.0" + annotationProcessor "com.jakewharton:butterknife-compiler:10.1.0" - implementation "com.squareup.retrofit2:retrofit:2.0.0" - implementation "com.squareup.retrofit2:converter-gson:2.0.0" + implementation "com.squareup.retrofit2:retrofit:2.5.0" + implementation "com.squareup.retrofit2:converter-gson:2.5.0" implementation "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0" - implementation "com.squareup.okhttp3:okhttp:3.0.1" - implementation "com.squareup.okhttp3:okhttp-urlconnection:3.0.1" - implementation "com.squareup.okhttp3:logging-interceptor:3.4.1" + implementation 'com.squareup.okhttp3:okhttp:4.0.0-alpha02' + implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.0.0-alpha02' + implementation 'com.squareup.okhttp3:logging-interceptor:4.0.0-alpha02' // glide image library - implementation "com.github.bumptech.glide:glide:4.3.1" + implementation "com.github.bumptech.glide:glide:4.9.0" - implementation "com.jakewharton.rxbinding2:rxbinding:2.0.0" + testImplementation 'junit:junit:4.13-beta-3' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } diff --git a/app/src/androidTest/java/info/androidhive/rxjavasearch/ExampleInstrumentedTest.java b/app/src/androidTest/java/info/androidhive/rxjavasearch/ExampleInstrumentedTest.java index 7e1c525..ff03373 100644 --- a/app/src/androidTest/java/info/androidhive/rxjavasearch/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/info/androidhive/rxjavasearch/ExampleInstrumentedTest.java @@ -1,8 +1,8 @@ package info.androidhive.rxjavasearch; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapter.java b/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapter.java index c002dbe..5b687dc 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapter.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapter.java @@ -5,7 +5,7 @@ */ import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -19,10 +19,11 @@ import info.androidhive.rxjavasearch.R; import info.androidhive.rxjavasearch.network.model.Contact; +import info.androidhive.rxjavasearch.network.model.Person; public class ContactsAdapter extends RecyclerView.Adapter { private Context context; - private List contactList; + private List personList; private ContactsAdapterListener listener; public class MyViewHolder extends RecyclerView.ViewHolder { @@ -39,17 +40,17 @@ public MyViewHolder(View view) { @Override public void onClick(View view) { // send selected contact in callback - listener.onContactSelected(contactList.get(getAdapterPosition())); + listener.onContactSelected(personList.get(getAdapterPosition())); } }); } } - public ContactsAdapter(Context context, List contactList, ContactsAdapterListener listener) { + public ContactsAdapter(Context context, List personList, ContactsAdapterListener listener) { this.context = context; this.listener = listener; - this.contactList = contactList; + this.personList = personList; } @Override @@ -62,22 +63,22 @@ public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(MyViewHolder holder, final int position) { - final Contact contact = contactList.get(position); - holder.name.setText(contact.getName()); - holder.phone.setText(contact.getPhone()); + final Person person = personList.get(position); + holder.name.setText(person.getFirstName()); + holder.phone.setText(person.getLastName()); - Glide.with(context) - .load(contact.getProfileImage()) +/* Glide.with(context) + .load(person.getProfileImage()) .apply(RequestOptions.circleCropTransform()) - .into(holder.thumbnail); + .into(holder.thumbnail);*/ } @Override public int getItemCount() { - return contactList.size(); + return personList.size(); } public interface ContactsAdapterListener { - void onContactSelected(Contact contact); + void onContactSelected(Person person); } } diff --git a/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapterFilterable.java b/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapterFilterable.java index 2efbfa2..63ce273 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapterFilterable.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/adapter/ContactsAdapterFilterable.java @@ -5,7 +5,7 @@ */ import android.content.Context; -import android.support.v7.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/info/androidhive/rxjavasearch/app/Const.java b/app/src/main/java/info/androidhive/rxjavasearch/app/Const.java index e493cb0..8a92f58 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/app/Const.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/app/Const.java @@ -6,4 +6,5 @@ public class Const { public static final String BASE_URL = "https://api.androidhive.info/json/"; + public static final String LOCALHOST_URL = "http://192.168.0.5/~gmiklay/rest_api_demo/"; } diff --git a/app/src/main/java/info/androidhive/rxjavasearch/network/ApiClient.java b/app/src/main/java/info/androidhive/rxjavasearch/network/ApiClient.java index 74ad208..0019b02 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/network/ApiClient.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/network/ApiClient.java @@ -32,7 +32,7 @@ public static Retrofit getClient() { if (retrofit == null) { retrofit = new Retrofit.Builder() - .baseUrl(Const.BASE_URL) + .baseUrl(Const.LOCALHOST_URL) .client(okHttpClient) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) diff --git a/app/src/main/java/info/androidhive/rxjavasearch/network/ApiService.java b/app/src/main/java/info/androidhive/rxjavasearch/network/ContactApi.java similarity index 92% rename from app/src/main/java/info/androidhive/rxjavasearch/network/ApiService.java rename to app/src/main/java/info/androidhive/rxjavasearch/network/ContactApi.java index 54b0317..7f1bbf1 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/network/ApiService.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/network/ContactApi.java @@ -11,7 +11,7 @@ * Created by ravi on 31/01/18. */ -public interface ApiService { +public interface ContactApi { @GET("contacts.php") Single> getContacts(@Query("source") String source, @Query("search") String query); diff --git a/app/src/main/java/info/androidhive/rxjavasearch/network/PersonsApi.java b/app/src/main/java/info/androidhive/rxjavasearch/network/PersonsApi.java new file mode 100644 index 0000000..874a3ae --- /dev/null +++ b/app/src/main/java/info/androidhive/rxjavasearch/network/PersonsApi.java @@ -0,0 +1,46 @@ +package info.androidhive.rxjavasearch.network; + +import java.util.List; + +import info.androidhive.rxjavasearch.network.model.Person; +import io.reactivex.Single; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Query; + +public interface PersonsApi { + + @Headers("Content-Type: application/json") + @GET("persons") + Single> getPersons( + @Query("uid[]") Integer[] uid, + @Query("limit") Integer limit, + @Query("like") String like + ); + + @GET("persons/{uid}") + Call> getPersonById(@Path("uid") int uid); + + @GET("persons/generate/{no_of_persons}") + Call> generatePersons( + @Path("no_of_persons") int no_of_persons, + @Query("with_confirm") boolean with_confirm + ); + + @Headers("Content-Type: application/json") + @POST("persons") + Call> getPersonsUnlimited( + @Body String body, + @Query("limit") Integer limit + ); + + @Headers("Content-Type: application/json") + @POST("persons/insert") + Call> insertPersons( + @Body String body + ); +} \ No newline at end of file diff --git a/app/src/main/java/info/androidhive/rxjavasearch/network/model/Person.java b/app/src/main/java/info/androidhive/rxjavasearch/network/model/Person.java new file mode 100644 index 0000000..a72a7af --- /dev/null +++ b/app/src/main/java/info/androidhive/rxjavasearch/network/model/Person.java @@ -0,0 +1,103 @@ +package info.androidhive.rxjavasearch.network.model; + +import com.google.gson.annotations.SerializedName; + +public class Person { + + private int uid; + + @SerializedName("first_name") + private String firstName; + + @SerializedName("last_name") + private String lastName; + + @SerializedName("sex_def_uid") + private int sexDefUid; + + @SerializedName("date_of_birth") + private String dateOfBirth; + + private String sex; + private String age; + + public Person() { + } + + public Person(int uid, String firstName, String lastName, int sexDefUid, String dateOfBirth, String sex) { + this.uid = uid; + this.firstName = firstName; + this.lastName = lastName; + this.sexDefUid = sexDefUid; + this.dateOfBirth = dateOfBirth; + this.sex = sex; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public int getSexDefUid() { + return sexDefUid; + } + + public void setSexDefUid(int sexDefUid) { + this.sexDefUid = sexDefUid; + } + + public String getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(String dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getAge() { + return age; + } + + public void setAge(String age) { + this.age = age; + } + + @Override + public String toString() { + return "Person{" + + "uid=" + uid + + ", firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", sexDefUid=" + sexDefUid + + ", dateOfBirth=" + dateOfBirth + + ", sex='" + sex + '\'' + + '}'; + } +} diff --git a/app/src/main/java/info/androidhive/rxjavasearch/view/LocalSearchActivity.java b/app/src/main/java/info/androidhive/rxjavasearch/view/LocalSearchActivity.java index 4c58839..2a036d8 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/view/LocalSearchActivity.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/view/LocalSearchActivity.java @@ -2,20 +2,20 @@ import android.graphics.Color; import android.os.Build; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.DividerItemDecoration; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.EditText; -import com.jakewharton.rxbinding2.widget.RxTextView; -import com.jakewharton.rxbinding2.widget.TextViewTextChangeEvent; +import com.jakewharton.rxbinding3.widget.RxTextView; +import com.jakewharton.rxbinding3.widget.TextViewTextChangeEvent; import java.util.ArrayList; import java.util.List; @@ -27,7 +27,7 @@ import info.androidhive.rxjavasearch.R; import info.androidhive.rxjavasearch.adapter.ContactsAdapterFilterable; import info.androidhive.rxjavasearch.network.ApiClient; -import info.androidhive.rxjavasearch.network.ApiService; +import info.androidhive.rxjavasearch.network.ContactApi; import info.androidhive.rxjavasearch.network.model.Contact; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -40,7 +40,7 @@ public class LocalSearchActivity extends AppCompatActivity implements ContactsAd private static final String TAG = LocalSearchActivity.class.getSimpleName(); private CompositeDisposable disposable = new CompositeDisposable(); - private ApiService apiService; + private ContactApi contactApi; private ContactsAdapterFilterable mAdapter; private List contactsList = new ArrayList<>(); @@ -72,7 +72,7 @@ protected void onCreate(Bundle savedInstanceState) { whiteNotificationBar(recyclerView); - apiService = ApiClient.getClient().create(ApiService.class); + contactApi = ApiClient.getClient().create(ContactApi.class); disposable.add(RxTextView.textChangeEvents(inputSearch) .skipInitialValue() @@ -99,8 +99,8 @@ private DisposableObserver searchContacts() { return new DisposableObserver() { @Override public void onNext(TextViewTextChangeEvent textViewTextChangeEvent) { - Log.d(TAG, "Search query: " + textViewTextChangeEvent.text()); - mAdapter.getFilter().filter(textViewTextChangeEvent.text()); + Log.d(TAG, "Search query: " + textViewTextChangeEvent.getText()); + mAdapter.getFilter().filter(textViewTextChangeEvent.getText()); } @Override @@ -119,7 +119,7 @@ public void onComplete() { * Fetching all contacts */ private void fetchContacts(String source) { - disposable.add(apiService + disposable.add(contactApi .getContacts(source, null) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/info/androidhive/rxjavasearch/view/MainActivity.java b/app/src/main/java/info/androidhive/rxjavasearch/view/MainActivity.java index fd46650..8d11208 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/view/MainActivity.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/view/MainActivity.java @@ -4,13 +4,10 @@ import android.graphics.Color; import android.os.Build; import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import android.view.View; -import android.view.Menu; -import android.view.MenuItem; import butterknife.ButterKnife; import butterknife.OnClick; diff --git a/app/src/main/java/info/androidhive/rxjavasearch/view/RemoteSearchActivity.java b/app/src/main/java/info/androidhive/rxjavasearch/view/RemoteSearchActivity.java index 977eb3b..e8b2bc3 100644 --- a/app/src/main/java/info/androidhive/rxjavasearch/view/RemoteSearchActivity.java +++ b/app/src/main/java/info/androidhive/rxjavasearch/view/RemoteSearchActivity.java @@ -2,20 +2,20 @@ import android.graphics.Color; import android.os.Build; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.DividerItemDecoration; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.appcompat.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.EditText; -import com.jakewharton.rxbinding2.widget.RxTextView; -import com.jakewharton.rxbinding2.widget.TextViewTextChangeEvent; +import com.jakewharton.rxbinding3.widget.RxTextView; +import com.jakewharton.rxbinding3.widget.TextViewTextChangeEvent; import java.util.ArrayList; import java.util.List; @@ -27,8 +27,10 @@ import info.androidhive.rxjavasearch.R; import info.androidhive.rxjavasearch.adapter.ContactsAdapter; import info.androidhive.rxjavasearch.network.ApiClient; -import info.androidhive.rxjavasearch.network.ApiService; +import info.androidhive.rxjavasearch.network.ContactApi; +import info.androidhive.rxjavasearch.network.PersonsApi; import info.androidhive.rxjavasearch.network.model.Contact; +import info.androidhive.rxjavasearch.network.model.Person; import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; @@ -43,9 +45,11 @@ public class RemoteSearchActivity extends AppCompatActivity implements ContactsA private CompositeDisposable disposable = new CompositeDisposable(); private PublishSubject publishSubject = PublishSubject.create(); - private ApiService apiService; + private ContactApi contactApi; + private PersonsApi personsApi; private ContactsAdapter mAdapter; private List contactsList = new ArrayList<>(); + private List personList = new ArrayList<>(); @BindView(R.id.input_search) EditText inputSearch; @@ -66,7 +70,7 @@ protected void onCreate(Bundle savedInstanceState) { setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - mAdapter = new ContactsAdapter(this, contactsList, this); + mAdapter = new ContactsAdapter(this, personList, this); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); recyclerView.setLayoutManager(mLayoutManager); @@ -76,18 +80,24 @@ protected void onCreate(Bundle savedInstanceState) { whiteNotificationBar(recyclerView); - apiService = ApiClient.getClient().create(ApiService.class); + contactApi = ApiClient.getClient().create(ContactApi.class); + personsApi = ApiClient.getClient().create(PersonsApi.class); - DisposableObserver> observer = getSearchObserver(); + initReactiveX(); + } + + private void initReactiveX() { + DisposableObserver> observer = getSearchObserver(); disposable.add( publishSubject .debounce(300, TimeUnit.MILLISECONDS) .distinctUntilChanged() - .switchMapSingle(new Function>>() { + .switchMapSingle(new Function>>() { @Override - public Single> apply(String s) throws Exception { - return apiService.getContacts(null, s) + public Single> apply(String s) throws Exception { + Log.d("From_me", "personsApi.getPersons: " + s); + return personsApi.getPersons(null, 10000, s) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } @@ -110,12 +120,12 @@ public Single> apply(String s) throws Exception { publishSubject.onNext(""); } - private DisposableObserver> getSearchObserver() { - return new DisposableObserver>() { + private DisposableObserver> getSearchObserver() { + return new DisposableObserver>() { @Override - public void onNext(List contacts) { - contactsList.clear(); - contactsList.addAll(contacts); + public void onNext(List persons) { + personList.clear(); + personList.addAll(persons); mAdapter.notifyDataSetChanged(); } @@ -135,9 +145,9 @@ private DisposableObserver searchContactsTextWatcher() return new DisposableObserver() { @Override public void onNext(TextViewTextChangeEvent textViewTextChangeEvent) { - Log.d(TAG, "Search query: " + textViewTextChangeEvent.text()); + Log.d(TAG, "Search query: " + textViewTextChangeEvent.getText()); - publishSubject.onNext(textViewTextChangeEvent.text().toString()); + publishSubject.onNext(textViewTextChangeEvent.getText().toString()); } @Override @@ -160,7 +170,7 @@ protected void onDestroy() { } @Override - public void onContactSelected(Contact contact) { + public void onContactSelected(Person contact) { } diff --git a/app/src/main/res/layout/activity_local_search.xml b/app/src/main/res/layout/activity_local_search.xml index 27f3312..09248e2 100644 --- a/app/src/main/res/layout/activity_local_search.xml +++ b/app/src/main/res/layout/activity_local_search.xml @@ -1,25 +1,25 @@ - - - - + - + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9e8a0f4..f4e380d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,25 +1,25 @@ - - - - + - + diff --git a/app/src/main/res/layout/activity_remote_search.xml b/app/src/main/res/layout/activity_remote_search.xml index 8cc0caa..454b1b9 100644 --- a/app/src/main/res/layout/activity_remote_search.xml +++ b/app/src/main/res/layout/activity_remote_search.xml @@ -1,25 +1,25 @@ - - - - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/content_local_search.xml b/app/src/main/res/layout/content_local_search.xml index cd4c9d5..ac98593 100644 --- a/app/src/main/res/layout/content_local_search.xml +++ b/app/src/main/res/layout/content_local_search.xml @@ -16,7 +16,7 @@ android:hint="@string/hint_search" android:paddingBottom="@dimen/dimen_20" /> - -