From 47547816fc0368fd8ab82e7d77764c94c8f852b3 Mon Sep 17 00:00:00 2001 From: "HAKO-PC\\Hako" Date: Sat, 30 Dec 2017 13:40:43 -0300 Subject: [PATCH] + Listview Adapter class + iTunes API response parser + Artists listview loader + Search functionality + Search timer logic --- .../activities/ArtistListActivity.java | 74 +++++++++++++++++- .../adapters/ArtistsListAdapter.java | 41 ++++++++++ .../{Response.java => ItunesResponse.java} | 8 +- app/src/main/res/drawable/default_artist.png | Bin 25793 -> 5987 bytes .../main/res/layout/activity_artists_list.xml | 12 +-- .../main/res/layout/artists_list_adapter.xml | 17 ++-- app/src/main/res/values/styles.xml | 3 + 7 files changed, 131 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/com/hakodev/androiditunesapi/adapters/ArtistsListAdapter.java rename app/src/main/java/com/hakodev/androiditunesapi/models/{Response.java => ItunesResponse.java} (79%) diff --git a/app/src/main/java/com/hakodev/androiditunesapi/activities/ArtistListActivity.java b/app/src/main/java/com/hakodev/androiditunesapi/activities/ArtistListActivity.java index eb8d592..0d8b2ba 100644 --- a/app/src/main/java/com/hakodev/androiditunesapi/activities/ArtistListActivity.java +++ b/app/src/main/java/com/hakodev/androiditunesapi/activities/ArtistListActivity.java @@ -3,20 +3,31 @@ package com.hakodev.androiditunesapi.activities; import android.Manifest; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.constraint.ConstraintLayout; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; +import android.text.Editable; +import android.text.TextWatcher; import android.util.Log; +import android.widget.EditText; +import android.widget.ListView; import android.widget.Toast; import com.anthonycr.grant.PermissionsManager; import com.anthonycr.grant.PermissionsResultAction; +import com.google.gson.Gson; import com.hakodev.androiditunesapi.AndroidItunesAPI; import com.hakodev.androiditunesapi.R; +import com.hakodev.androiditunesapi.adapters.ArtistsListAdapter; +import com.hakodev.androiditunesapi.models.ItunesResponse; +import com.hakodev.androiditunesapi.models.Result; import com.hakodev.androiditunesapi.util.Utils; import java.io.IOException; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; import okhttp3.Call; import okhttp3.Callback; @@ -28,9 +39,17 @@ public class ArtistListActivity extends AppCompatActivity { private final static String TAG = "ArtistListActivity"; private final static String SEARCH_URL = "https://itunes.apple.com/search?term=%1$s&country=US&entity=musicArtist&limit=10"; + private final static String[] DEMO_ARTISTS = {"Valentine", "Children", "Red"}; private OkHttpClient networkClient; + private ArtistsListAdapter artistsListAdapter; + private ArrayList artistsList = new ArrayList<>(); + private ConstraintLayout lytBase; + private ListView listArtists; + private EditText txtArtistSearch; + + private Timer keypressTimer = new Timer(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -40,6 +59,9 @@ public class ArtistListActivity extends AppCompatActivity { setupViews(); init(); askForPermissions(); + + int randomArtistIndex = new Random().nextInt(DEMO_ARTISTS.length); + requestArtist(DEMO_ARTISTS[randomArtistIndex]); } @Override @@ -53,10 +75,40 @@ public class ArtistListActivity extends AppCompatActivity { private void setupViews() { lytBase = findViewById(R.id.lytBase); + listArtists = findViewById(R.id.listArtists); + txtArtistSearch = findViewById(R.id.txtArtistSearch); + txtArtistSearch.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 txt) { + keypressTimer.cancel(); + keypressTimer = new Timer(); + keypressTimer.schedule( + new TimerTask() { + @Override + public void run() { + if (txt.toString().length() > 3){ + requestArtist(txt.toString()); + } + } + }, 200); + } + }); } private void init() { networkClient = AndroidItunesAPI.getInstance().getNetworkClient(); + artistsListAdapter = new ArtistsListAdapter(this, artistsList); + listArtists.setAdapter(artistsListAdapter); } private void askForPermissions() { @@ -90,10 +142,26 @@ public class ArtistListActivity extends AppCompatActivity { @Override public void onResponse(@NonNull Call call, @NonNull final Response response) throws IOException { - String res = response.body().string(); - Log.w(TAG, res); + String body = response.body().string(); + Log.w(TAG, body); + buildArtistsList(parseArtistsResponse(body)); } }); }).start(); } + + private ArrayList parseArtistsResponse(String body) { + ItunesResponse itunesResponse = new Gson().fromJson(body, ItunesResponse.class); + ArrayList artistsNames = new ArrayList<>(); + for (Result artist : itunesResponse.getResults()) { + artistsNames.add(artist.getArtistName()); + } + return artistsNames; + } + + private void buildArtistsList(ArrayList artists) { + artistsList.clear(); + artistsList.addAll(artists); + runOnUiThread(() -> artistsListAdapter.notifyDataSetChanged()); + } } diff --git a/app/src/main/java/com/hakodev/androiditunesapi/adapters/ArtistsListAdapter.java b/app/src/main/java/com/hakodev/androiditunesapi/adapters/ArtistsListAdapter.java new file mode 100644 index 0000000..53c4839 --- /dev/null +++ b/app/src/main/java/com/hakodev/androiditunesapi/adapters/ArtistsListAdapter.java @@ -0,0 +1,41 @@ +package com.hakodev.androiditunesapi.adapters; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import com.hakodev.androiditunesapi.R; + +import java.util.ArrayList; + +public class ArtistsListAdapter extends ArrayAdapter { + private final Context context; + private final ArrayList values; + + public ArtistsListAdapter(Context context, ArrayList values) { + super(context, R.layout.artists_list_adapter, values); + this.context = context; + this.values = values; + } + + @NonNull + @Override + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + if (convertView == null) { + if (inflater != null) { + convertView = inflater.inflate(R.layout.artists_list_adapter, parent, false); + } + } + TextView textView = convertView.findViewById(R.id.lblArtistName); + ImageView imageView = convertView.findViewById(R.id.imgArtist); + textView.setText(values.get(position)); + imageView.setImageResource(R.drawable.default_artist); + return convertView; + } +} diff --git a/app/src/main/java/com/hakodev/androiditunesapi/models/Response.java b/app/src/main/java/com/hakodev/androiditunesapi/models/ItunesResponse.java similarity index 79% rename from app/src/main/java/com/hakodev/androiditunesapi/models/Response.java rename to app/src/main/java/com/hakodev/androiditunesapi/models/ItunesResponse.java index 6c79748..47ef75d 100644 --- a/app/src/main/java/com/hakodev/androiditunesapi/models/Response.java +++ b/app/src/main/java/com/hakodev/androiditunesapi/models/ItunesResponse.java @@ -5,20 +5,20 @@ import com.google.gson.annotations.SerializedName; import java.util.List; -public class Response { +public class ItunesResponse { @SerializedName("resultCount") @Expose - private Long resultCount; + private int resultCount; @SerializedName("results") @Expose private List results = null; - public Long getResultCount() { + public int getResultCount() { return resultCount; } - public void setResultCount(Long resultCount) { + public void setResultCount(int resultCount) { this.resultCount = resultCount; } diff --git a/app/src/main/res/drawable/default_artist.png b/app/src/main/res/drawable/default_artist.png index 75de4d897816603716a33a2a0db6f25a0aa49561..76d6b5c4274519e233dfe237a5aad4ba69dd85eb 100644 GIT binary patch literal 5987 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 + tools:context="com.hakodev.androiditunesapi.activities.ArtistListActivity" + android:focusable="true" + android:focusableInTouchMode="true"> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index e8ff1bf..2494ff7 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -10,6 +10,9 @@ @color/colorText @color/colorTextSecondary @color/colorHintText + + @color/colorPrimary + @color/colorText