From f2ad77c3f7fd90b4a03588a4c2b9e39d454d780d Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 10 Jan 2014 16:46:32 +0200 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20ForumSectionAdapter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/adapters/ForumSectionAdapter.java | 83 +++++++++++++++++++ .../client/fragments/ForumFragment.java | 6 +- 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 src/com/annimon/client/adapters/ForumSectionAdapter.java diff --git a/src/com/annimon/client/adapters/ForumSectionAdapter.java b/src/com/annimon/client/adapters/ForumSectionAdapter.java new file mode 100644 index 0000000..4946c33 --- /dev/null +++ b/src/com/annimon/client/adapters/ForumSectionAdapter.java @@ -0,0 +1,83 @@ +package com.annimon.client.adapters; + +import java.util.List; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; +import com.annimon.client.R; +import com.annimon.client.entities.ForumSection; + +public class ForumSectionAdapter extends BaseAdapter { + + private static final int VIEW_TYPE_ITEM = 0; + private static final int VIEW_TYPE_HEADER = 1; + private static final int VIEW_TYPES_COUNT = 2; + + private final LayoutInflater mInflater; + private final List mItems; + + public ForumSectionAdapter(Context context, List items) { + mInflater = LayoutInflater.from(context); + mItems = items; + } + + @Override + public int getCount() { + return mItems.size(); + } + + @Override + public Object getItem(int position) { + return mItems.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + final int viewType = getItemViewType(position); + + final ViewHolder holder; + if (convertView == null) { + final int layoutId = (viewType == VIEW_TYPE_ITEM) ? R.layout.action_row_item : R.layout.action_row_title; + convertView = mInflater.inflate(layoutId, parent, false); + + holder = new ViewHolder(); + holder.name = (TextView) convertView; + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + final ForumSection section = mItems.get(position); + holder.name.setText(section.getName()); + + return convertView; + } + + @Override + public int getViewTypeCount() { + return VIEW_TYPES_COUNT; + } + + @Override + public int getItemViewType(int position) { + if (mItems.get(position).isHeader()) return VIEW_TYPE_HEADER; + return VIEW_TYPE_ITEM; + } + + @Override + public boolean isEnabled(int position) { + return getItemViewType(position) != VIEW_TYPE_HEADER; + } + + private static class ViewHolder { + TextView name; + } +} diff --git a/src/com/annimon/client/fragments/ForumFragment.java b/src/com/annimon/client/fragments/ForumFragment.java index 9a3e53c..7167aa7 100644 --- a/src/com/annimon/client/fragments/ForumFragment.java +++ b/src/com/annimon/client/fragments/ForumFragment.java @@ -8,6 +8,7 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import com.annimon.client.adapters.ForumPostAdapter; +import com.annimon.client.adapters.ForumSectionAdapter; import com.annimon.client.entities.ForumPost; import com.annimon.client.entities.ForumSection; import com.annimon.client.entities.ForumTopic; @@ -27,14 +28,13 @@ public class ForumFragment extends ListFragment { @Override public void onLoadingFinished(List items) { - final ArrayAdapter adapter = new ArrayAdapter( - getActivity(), android.R.layout.simple_list_item_1, items); + final ForumSectionAdapter adapter = new ForumSectionAdapter(getActivity(), items); setListAdapter(adapter); getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - ForumSection section = adapter.getItem(position); + ForumSection section = (ForumSection) adapter.getItem(position); if (section.getId() == ForumLoader.LAST_POSTS) { // Грузим список последних сообщений new ForumLoader(getActivity(), postListener).execute(