Back to project page CATaZine-Live.
The source code is released under:
GNU General Public License
If you think the Android project CATaZine-Live listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.melegy.catazine.adapter; //w ww. j a v a2s . c o m import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.melegy.catazine.R; import com.melegy.catazine.provider.FeedData.FeedColumns; import com.melegy.catazine.utils.UiUtils; public class FeedsCursorAdapter extends CursorLoaderExpandableListAdapter { private int isGroupPosition = -1; private int namePosition = -1; private int idPosition = -1; private int linkPosition = -1; private int iconPosition = -1; public FeedsCursorAdapter(Activity activity, Uri groupUri) { super(activity, groupUri, R.layout.item_feed_list, R.layout.item_feed_list); } @Override protected void onCursorLoaded(Context context, Cursor cursor) { getCursorPositions(cursor); } @Override protected void bindChildView(View view, Context context, Cursor cursor) { view.findViewById(R.id.indicator).setVisibility(View.INVISIBLE); TextView textView = ((TextView) view.findViewById(android.R.id.text1)); byte[] iconBytes = cursor.getBlob(iconPosition); Bitmap bitmap = UiUtils.getScaledBitmap(iconBytes, 18); if (bitmap != null) { textView.setCompoundDrawablesWithIntrinsicBounds(new BitmapDrawable(context.getResources(), bitmap), null, null, null); } else { textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); } textView.setText((cursor.isNull(namePosition) ? cursor.getString(linkPosition) : cursor.getString(namePosition))); } @Override protected void bindGroupView(View view, Context context, Cursor cursor, boolean isExpanded) { ImageView indicatorImage = (ImageView) view.findViewById(R.id.indicator); if (cursor.getInt(isGroupPosition) == 1) { indicatorImage.setVisibility(View.VISIBLE); TextView textView = ((TextView) view.findViewById(android.R.id.text1)); textView.setEnabled(true); textView.setText(cursor.getString(namePosition)); textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); textView.setText(cursor.getString(namePosition)); if (isExpanded) ; else ; } else { bindChildView(view, context, cursor); indicatorImage.setVisibility(View.GONE); } } @Override protected Uri getChildrenUri(Cursor groupCursor) { return FeedColumns.FEEDS_FOR_GROUPS_CONTENT_URI(groupCursor.getLong(idPosition)); } @Override public void notifyDataSetChanged() { getCursorPositions(null); super.notifyDataSetChanged(); } @Override public void notifyDataSetChanged(Cursor data) { getCursorPositions(data); } @Override public void notifyDataSetInvalidated() { getCursorPositions(null); super.notifyDataSetInvalidated(); } private synchronized void getCursorPositions(Cursor cursor) { if (cursor != null && isGroupPosition == -1) { isGroupPosition = cursor.getColumnIndex(FeedColumns.IS_GROUP); namePosition = cursor.getColumnIndex(FeedColumns.NAME); idPosition = cursor.getColumnIndex(FeedColumns._ID); linkPosition = cursor.getColumnIndex(FeedColumns.URL); iconPosition = cursor.getColumnIndex(FeedColumns.ICON); } } }