package com.gtappdevelopers.cryptotracker;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private RecyclerView currencyRV;
private EditText searchEdt;
private ArrayList<CurrencyModal> currencyModalArrayList;
private CurrencyRVAdapter currencyRVAdapter;
private ProgressBar loadingPB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
searchEdt = findViewById(R.id.idEdtCurrency);
loadingPB = findViewById(R.id.idPBLoading);
currencyRV = findViewById(R.id.idRVcurrency);
currencyModalArrayList = new ArrayList<>();
currencyRVAdapter = new CurrencyRVAdapter(currencyModalArrayList, this);
currencyRV.setLayoutManager(new LinearLayoutManager(this));
currencyRV.setAdapter(currencyRVAdapter);
getData();
searchEdt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
filter(s.toString());
}
});
}
private void filter(String filter) {
ArrayList<CurrencyModal> filteredlist = new ArrayList<>();
for (CurrencyModal item : currencyModalArrayList) {
if (item.getName().toLowerCase().contains(filter.toLowerCase())) {
filteredlist.add(item);
}
}
if (filteredlist.isEmpty()) {
Toast.makeText(this, "No currency found..", Toast.LENGTH_SHORT).show();
} else {
currencyRVAdapter.filterList(filteredlist);
}
}
private void getData() {
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
loadingPB.setVisibility(View.GONE);
try {
JSONArray dataArray = response.getJSONArray("data");
for (int i = 0; i < dataArray.length(); i++) {
JSONObject dataObj = dataArray.getJSONObject(i);
String symbol = dataObj.getString("symbol");
String name = dataObj.getString("name");
JSONObject quote = dataObj.getJSONObject("quote");
JSONObject USD = quote.getJSONObject("USD");
double price = USD.getDouble("price");
currencyModalArrayList.add(new CurrencyModal(name, symbol, price));
}
currencyRVAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "Something went amiss. Please try again later", Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "Something went amiss. Please try again later", Toast.LENGTH_SHORT).show();
}
}) {
@Override
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<>();
headers.put("X-CMC_PRO_API_KEY", "Enter your API key");
return headers;
}
};
queue.add(jsonObjectRequest);
}
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment