package wikokit.kiwidict.wordlist; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import wikokit.base.wikipedia.sql.Connect; import wikokit.base.wikt.sql.TPage; import wikokit.base.wikt.sql.index.IndexForeign; import wikokit.kiwidict.KWConstants; import wikokit.kiwidict.R; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class WordListArrayAdapter extends ArrayAdapter<String> { private final Activity context; // case I /** Words extracted by several letters (prefix). The values of array are important*/ TPage[] page_array; // or case II /** Foreign words extracted by several letters (prefix). */ IndexForeign[] index_foreign; // in both cases /* Text in the WordList rows: page_titles or "foreign_page_titles -> translations_to_native" */ private List<String> str_rows; static class ViewHolder { public TextView text; //public ImageView image; public TPage tpage; public IndexForeign index_foreign; } public WordListArrayAdapter(Activity context, List<String> page_titles, //String[] page_titles, TPage[] page_array) { super(context, R.layout.word_list_row, page_titles); this.context = context; this.page_array = page_array; this.index_foreign = null; this.str_rows = page_titles; } public void updateData(String[] page_titles, TPage[] page_array) { this.page_array = page_array; // the values are important this.index_foreign = null; this.str_rows.clear(); // ???? the values are not important - only the size of the list this.str_rows.addAll(Arrays.asList(page_titles)); // context.setProgressBarIndeterminateVisibility(true); this.notifyDataSetChanged(); } public void updateData(String[] foreign_page_titles, IndexForeign[] index_foreign) { this.page_array = null; this.index_foreign = index_foreign; // the values are important this.str_rows.clear(); // the values are important too this.str_rows.addAll(Arrays.asList(foreign_page_titles)); this.notifyDataSetChanged(); } @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = context.getLayoutInflater(); rowView = inflater.inflate(R.layout.word_list_row, null); ViewHolder viewHolder = new ViewHolder(); viewHolder.text = (TextView) rowView.findViewById(R.id.textView_word); //viewHolder.image = (ImageView) rowView // .findViewById(R.id.ImageView01); rowView.setTag(viewHolder); } ViewHolder holder = (ViewHolder) rowView.getTag(); //String s = "I love Wiktionary :)"; String s = KWConstants.getKiwidictName() + " " + KWConstants.kiwidict_version + "\n" + "Wiktionary parsed database " + Connect.getWiktionaryDumpVersion(); if(null != page_array && position < page_array.length) { TPage tpage = page_array[position]; // String s = names[position]; s = tpage.getPageTitle(); } else { if(null != index_foreign && position < index_foreign.length) { IndexForeign i_foreign = index_foreign[position]; // String s = names[position]; s = i_foreign.getConcatForeignAndNativeWords(" -> "); } } holder.text.setText(s); return rowView; } }