package net.krautchan.android.widget;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import net.krautchan.R;
import net.krautchan.android.activity.ProvidesBoards;
import net.krautchan.android.activity.ProvidesThreads;
import net.krautchan.data.KCThread;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class ThreadListAdapter extends ArrayAdapter<KCThread> {
@SuppressLint("SimpleDateFormat")
private static SimpleDateFormat dfShort = new SimpleDateFormat ("dd.MM. HH:mm");
private final ProvidesBoards boardProvider;
private final ProvidesThreads threadProvider;
private ArrayList<Long> ids;
private LayoutInflater mInflater;
private int mViewResourceId;
public ThreadListAdapter(ProvidesBoards bProv, ProvidesThreads tProv, Context context, int textViewResourceId) {
super(context, textViewResourceId);
boardProvider = bProv;
threadProvider = tProv;
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mViewResourceId = textViewResourceId;
ids = new ArrayList<Long>();
}
@Override
public void add(KCThread thread) {
if ((!ids.contains(thread.dbId)) && (!thread.hidden)) {
ids.add(ids.size(), thread.dbId);
super.add(thread);
}
}
public void remove (KCThread thread) {
ids.remove(thread.dbId);
super.remove(thread);
}
public void hide (KCThread thread) {
remove(thread);
notifyDataSetChanged();
}
public void clear () {
ids = new ArrayList<Long>();
}
@Override
public View getDropDownView (int position, View convertView, ViewGroup parent) {
return getView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = null;
if (null == convertView) {
v = mInflater.inflate(mViewResourceId, null);
} else {
v = convertView;
}
Long id = ids.get(position);
KCThread thread = threadProvider.getThread (id);
if (thread == null) {
TextView shortLabel = (TextView) v.findViewById(R.id.threadListNumber);
shortLabel.setText("Nothing found");
} else {
TextView numberLabel = (TextView) v.findViewById(R.id.threadListNumber);
String numLabel = "null";
if (null != thread.kcNummer) {
numLabel = thread.kcNummer.toString();
};
numberLabel.setText(numLabel);
TextView boardlabel = (TextView) v.findViewById(R.id.threadListBoard);
if (null != boardlabel) {
boardlabel.setText("/"+boardProvider.getBoard(thread.board_id).shortName+"/");
}
TextView dateLabel = (TextView) v.findViewById(R.id.threadListDate);
dateLabel.setText(dfShort.format(thread.firstPostDate));
TextView titleLabel = (TextView) v.findViewById(R.id.threadListTitle);
if (null != thread.title) {
titleLabel.setText(thread.title);
} else {
titleLabel.setText("");
}
TextView contentLabel = (TextView) v.findViewById(R.id.threadListContent);
contentLabel.setText(thread.digest);
TextView numPostsLabel = (TextView) v.findViewById(R.id.threadListNumPostings);
if (null != numPostsLabel) {
numPostsLabel.setText(" "+thread.numPostings+ " Posts");
}
}
return v;
}
@Override
public int getCount() {
return ids.size();
}
@Override
public long getItemId(int position) {
if (position > ids.size()) {
return -1;
}
return ids.get(position);
}
@Override
public boolean hasStableIds() {
return true;
}
}