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