Skip to content

Instantly share code, notes, and snippets.

@sprengerst
Last active May 26, 2016 16:09
Show Gist options
  • Save sprengerst/979bed729468f1c2e36967c84b666cce to your computer and use it in GitHub Desktop.
Save sprengerst/979bed729468f1c2e36967c84b666cce to your computer and use it in GitHub Desktop.
demo for bad widget
package software.sprenger.beerhunter.widget;
import android.annotation.TargetApi;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.widget.AdapterView;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
import software.sprenger.beerhunter.R;
import software.sprenger.beerhunter.data.BeerColumns;
import software.sprenger.beerhunter.data.BeerProvider;
/**
* Created by Stefan Sprenger
*
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class DetailWidgetRemoteViewsService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return new RemoteViewsFactory() {
private Cursor data = null;
@Override
public void onCreate() {
// Nothing to do
System.out.println("ONCREATE RVF");
}
@Override
public void onDataSetChanged() {
if (data != null) {
data.close();
}
final long identityToken = Binder.clearCallingIdentity();
data = getContentResolver().query(BeerProvider.Beers.CONTENT_URI,null,null,null,null);
Binder.restoreCallingIdentity(identityToken);
}
@Override
public void onDestroy() {
if (data != null) {
data.close();
data = null;
}
}
@Override
public int getCount() {
return data == null ? 0 : data.getCount();
}
@Override
public RemoteViews getViewAt(int position) {
System.out.println("GVAT"+position);
if (position == AdapterView.INVALID_POSITION ||
data == null || !data.moveToPosition(position)) {
return null;
}
System.out.println("RECEIVED VIEW AT");
RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget_detail_list_item);
String beerid = data.getString(data.getColumnIndex(BeerColumns._ID));
String beerName = data.getString(data.getColumnIndex(BeerColumns.BEER_NAME));
System.out.println("BEERNAME: "+beerName);
views.setTextViewText(R.id.beer_name_item, beerName);
final Intent fillInIntent = new Intent();
Uri quoteUri = BeerProvider.Beers.withBeerID(beerid);
fillInIntent.setData(quoteUri);
views.setOnClickFillInIntent(R.id.widget_list_item, fillInIntent);
return views;
}
@Override
public RemoteViews getLoadingView() {
return new RemoteViews(getPackageName(), R.layout.widget_detail_list_item);
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public long getItemId(int position) {
System.out.println("MVTpositionPOS" + position);
if (data.moveToPosition(position)) {
System.out.println("MVTpositionDATA" + data.getLong(data.getColumnIndex(BeerColumns._ID)));
return data.getLong(data.getColumnIndex(BeerColumns._ID));
}
return position;
}
@Override
public boolean hasStableIds() {
return true;
}
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment