package org.wikipedia.page; 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 org.wikipedia.R; import org.wikipedia.util.StringUtil; /** * */ class IssuesListAdapter extends ArrayAdapter<String> { private static final String SEPARATOR = "<small><i>("; private static final String SEPARATOR_END = ")</i></small>"; private final String[] items; private ViewHolder holder; IssuesListAdapter(@NonNull Context context, @NonNull String[] items) { super(context, 0, items); this.items = items; } class ViewHolder { private ImageView icon; private TextView text; private TextView subText; } @Override public boolean isEnabled(int position) { return false; // don't make it appear clickable } @Override @NonNull public View getView(int position, View convertView, @NonNull ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); if (convertView == null) { convertView = inflater.inflate(R.layout.item_issue, parent, false); holder = new ViewHolder(); holder.icon = (ImageView) convertView.findViewById(R.id.issue_icon); holder.text = (TextView) convertView.findViewById(R.id.issue_text); holder.subText = (TextView) convertView.findViewById(R.id.issue_subtext); convertView.setTag(holder); } else { // view already defined, retrieve view holder holder = (ViewHolder) convertView.getTag(); } updateText(position); return convertView; } private void updateText(int position) { String fullText = items[position].replaceAll(" href\\s*=", " x="); // disable links int end = fullText.lastIndexOf(SEPARATOR_END); int start = fullText.lastIndexOf(SEPARATOR, end); if (start != -1 && end != -1) { String text1 = fullText.substring(0, start); String text2 = fullText.substring(start + SEPARATOR.length(), end); holder.text.setText(StringUtil.fromHtml(text1)); holder.subText.setText(StringUtil.fromHtml(text2)); holder.subText.setVisibility(View.VISIBLE); } else { holder.text.setText(StringUtil.fromHtml(fullText)); holder.subText.setVisibility(View.GONE); } } }