Last active
May 26, 2016 16:09
-
-
Save sprengerst/979bed729468f1c2e36967c84b666cce to your computer and use it in GitHub Desktop.
demo for bad widget
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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