--- /dev/null
+package com.folioreader.ui.folio.adapter;
+
+import android.content.Context;
+import android.graphics.Typeface;
+import android.support.v7.widget.RecyclerView;
+import android.text.SpannableString;
+import android.text.style.StyleSpan;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.folioreader.R;
+import com.folioreader.model.dictionary.Audio;
+import com.folioreader.model.dictionary.DictionaryResults;
+import com.folioreader.model.dictionary.Example;
+import com.folioreader.model.dictionary.Pronunciations;
+import com.folioreader.model.dictionary.Senses;
+import com.folioreader.ui.base.DictionaryCallBack;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author gautam chibde on 4/7/17.
+ */
+
+public class DictionaryAdapter extends RecyclerView.Adapter<DictionaryAdapter.DictionaryHolder> {
+
+ private List<DictionaryResults> results;
+ private Context context;
+ private DictionaryCallBack callBack;
+
+ public DictionaryAdapter(Context context, DictionaryCallBack callBack) {
+ this.results = new ArrayList<>();
+ this.context = context;
+ this.callBack = callBack;
+ }
+
+ @Override
+ public DictionaryHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ return new DictionaryHolder(LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.item_dictionary, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(DictionaryHolder holder, int position) {
+ final DictionaryResults res = results.get(position);
+ if (res.getPartOfSpeech() != null) {
+ int wordLength = res.getHeadword().length();
+ SpannableString spannableString = new SpannableString(res.getHeadword() + " - " + res.getPartOfSpeech());
+ spannableString.setSpan(new StyleSpan(Typeface.BOLD), 0, wordLength, 0);
+ spannableString.setSpan(new StyleSpan(Typeface.ITALIC), wordLength + 2, spannableString.length(), 0);
+ holder.name.setText(spannableString);
+ } else {
+ holder.name.setTypeface(Typeface.DEFAULT_BOLD);
+ holder.name.setText(res.getHeadword());
+ }
+ StringBuilder def = new StringBuilder();
+ StringBuilder exp = new StringBuilder();
+
+ if (res.getSenses() != null) {
+ for (Senses senses : res.getSenses()) {
+ if (senses.getDefinition() != null) {
+ for (String s : senses.getDefinition()) {
+ def.append("\u2022 ").append(s).append('\n');
+ }
+ }
+ }
+
+ for (Senses senses : res.getSenses()) {
+ if (senses.getExamples() != null) {
+ for (Example s : senses.getExamples()) {
+ exp.append("\u2022 ").append(s.getText()).append('\n');
+ }
+ }
+ }
+ }
+ if (!def.toString().trim().isEmpty()) {
+ def.insert(0, "Definition\n");
+ holder.definition.setText(def.toString());
+ } else {
+ holder.definition.setVisibility(View.GONE);
+ }
+
+ if (!exp.toString().trim().isEmpty()) {
+ exp.insert(0, "Example\n");
+ holder.example.setText(exp.toString());
+ } else {
+ holder.example.setVisibility(View.GONE);
+ }
+// if (res.getPronunciations() != null) {
+// final String url = getAudioUrl(res.getPronunciations());
+// if (url == null) {
+// holder.sound.setVisibility(View.GONE);
+// }
+// }
+
+// holder.sound.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View v) {
+// Log.i("DictionaryAdapter", "clicked");
+// if (res.getPronunciations() != null) {
+// final String url = getAudioUrl(res.getPronunciations());
+// callBack.playMedia(url);
+// }
+// }
+// });
+ }
+
+ private String getAudioUrl(List<Pronunciations> pronunciations) {
+ if (!pronunciations.isEmpty()
+ && pronunciations.get(0).getAudio() != null
+ && !pronunciations.get(0).getAudio().isEmpty()) {
+ Audio audio = pronunciations.get(0).getAudio().get(0);
+ if (audio.getUrl() != null) {
+ return audio.getUrl();
+ }
+ }
+ return null;
+ }
+
+ public void setResults(List<DictionaryResults> resultsList) {
+ if(resultsList != null && !resultsList.isEmpty()) {
+ results.addAll(resultsList);
+ notifyDataSetChanged();
+ }
+ }
+
+ public void clear() {
+ results.clear();
+ notifyItemRangeRemoved(0, results.size());
+ }
+
+ @Override
+ public int getItemCount() {
+ return results.size();
+ }
+
+ public static class DictionaryHolder extends RecyclerView.ViewHolder {
+ private TextView name, definition, example;
+ //TODO private ImageButton sound;
+
+ public DictionaryHolder(View itemView) {
+ super(itemView);
+ name = (TextView) itemView.findViewById(R.id.tv_word);
+ //sound = (ImageButton) itemView.findViewById(R.id.ib_speak);
+ definition = (TextView) itemView.findViewById(R.id.tv_definition);
+ example = (TextView) itemView.findViewById(R.id.tv_examples);
+ }
+ }
+}