package org.kvj.lima1.android.ui.adapter; import org.kvj.lima1.android.ui.PageList; import org.kvj.lima1.android.ui.R; import org.kvj.lima1.android.ui.controller.Lima1Controller; import org.kvj.lima1.sync.PJSONObject; import android.content.Context; import android.database.DataSetObserver; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListAdapter; import android.widget.TextView; public class PageListAdapter implements ListAdapter { private PageList pane = null; public PageListAdapter(PageList pane) { this.pane = pane; } PJSONObject[] pages = new PJSONObject[0]; DataSetObserver observer = null; private Lima1Controller controller; public int getCount() { return pages.length; } public PJSONObject getItem(int arg0) { return pages[arg0]; } public long getItemId(int position) { return position; } public int getItemViewType(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) parent.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.page_list_item, parent, false); } PJSONObject page = getItem(position); TextView title = (TextView) convertView .findViewById(R.id.page_list_item_title); title.setText(page.optString("title")); return convertView; } public int getViewTypeCount() { return 1; } public boolean hasStableIds() { return false; } public boolean isEmpty() { return pages.length == 0; } public void registerDataSetObserver(DataSetObserver observer) { this.observer = observer; } public void unregisterDataSetObserver(DataSetObserver observer) { this.observer = null; } public boolean areAllItemsEnabled() { return true; } public boolean isEnabled(int position) { return true; } public void reload(boolean archived) { PJSONObject[] pages = controller.getPages(archived); if (null == pages) { pane.notifyUser("Error loading pages"); } else { this.pages = pages; if (null != observer) { observer.onChanged(); } } } public void setController(Lima1Controller controller) { this.controller = controller; } }