package com.nabil.radeon.trajectgps; import android.app.SearchManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import java.util.ArrayList; import java.util.Arrays; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener{ private RecyclerView recyclerView; private ArrayList data; private DataAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_search, menu); MenuItem searchItem = menu.findItem(R.id.search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); searchView.setOnQueryTextListener(this); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchView.setSearchableInfo(searchManager.getSearchableInfo( new ComponentName(this, SearchableActivity.class))); searchView.setIconifiedByDefault(false); return true; } @Override public boolean onQueryTextSubmit(String query) { // User pressed the search button return false; } @Override public boolean onQueryTextChange(String newText) { // User changed the text return false; } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); Toast.makeText(this, "Searching by: "+ query, Toast.LENGTH_SHORT).show(); } else if (Intent.ACTION_VIEW.equals(intent.getAction())) { String uri = intent.getDataString(); Toast.makeText(this, "Suggestion: "+ uri, Toast.LENGTH_SHORT).show(); } } private void initViews(){ recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); loadJSON(); } private void loadJSON(){ OkHttpClient.Builder client = new OkHttpClient.Builder(); client.readTimeout(60, TimeUnit.SECONDS); client.connectTimeout(60, TimeUnit.SECONDS); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://192.168.1.8") .client(client.build()) .addConverterFactory(GsonConverterFactory.create()) .build(); RequestInterface request = retrofit.create(RequestInterface.class); Call call = request.getJSON(); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { JSONResponse jsonResponse = response.body(); data = new ArrayList<>(Arrays.asList(jsonResponse.getPerson())); adapter = new DataAdapter(data); recyclerView.setAdapter(adapter); } @Override public void onFailure(Call call, Throwable t) { Log.d("Error",t.getMessage()); } }); } }