Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

# RemoteViewsService.RemoteViewsFactory

*** ** * ** ***

` public static interface RemoteViewsService.RemoteViewsFactory `   
` `

|---|
| android.widget.RemoteViewsService.RemoteViewsFactory |

<br />

*** ** * ** ***

An interface for an adapter between a remote collection view (ListView, GridView, etc) and the underlying data for that view. The implementor is responsible for making a RemoteView for each item in the data set. This interface is a thin wrapper around `https://developer.android.com/reference/android/widget/Adapter`.
**See also:**

- `https://developer.android.com/reference/android/widget/Adapter`
- `https://developer.android.com/reference/android/appwidget/AppWidgetManager`

## Summary

| ### Public methods ||
|---|---|
| ` abstract int` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getCount()() ` See `https://developer.android.com/reference/android/widget/Adapter#getCount()` |
| ` abstract long` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getItemId(int)(int position) ` See `https://developer.android.com/reference/android/widget/Adapter#getItemId(int)`. |
| ` abstract https://developer.android.com/reference/android/widget/RemoteViews` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getLoadingView()() ` This allows for the use of a custom loading view which appears between the time that `https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getViewAt(int)` is called and returns. |
| ` abstract https://developer.android.com/reference/android/widget/RemoteViews` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getViewAt(int)(int position) ` See `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`. |
| ` abstract int` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getViewTypeCount()() ` See `https://developer.android.com/reference/android/widget/Adapter#getViewTypeCount()`. |
| ` abstract boolean` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#hasStableIds()() ` See `https://developer.android.com/reference/android/widget/Adapter#hasStableIds()`. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#onCreate()() ` Called when your factory is first constructed. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#onDataSetChanged()() ` Called when notifyDataSetChanged() is triggered on the remote adapter. |
| ` abstract void` | ` https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#onDestroy()() ` Called when the last RemoteViewsAdapter that is associated with this factory is unbound. |

## Public methods

### getCount

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getCount ()
```

See `https://developer.android.com/reference/android/widget/Adapter#getCount()`

<br />

| Returns ||
|---|---|
| `int` | Count of items. <br /> |

### getItemId

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract long getItemId (int position)
```

See `https://developer.android.com/reference/android/widget/Adapter#getItemId(int)`.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position of the item within the data set whose row id we want. <br /> |

| Returns ||
|---|---|
| `long` | The id of the item at the specified position. <br /> |

### getLoadingView

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract RemoteViews getLoadingView ()
```

This allows for the use of a custom loading view which appears between the time that `https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getViewAt(int)` is called and returns. If null is returned, a default loading view will be used.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/widget/RemoteViews` | The RemoteViews representing the desired loading view. <br /> |

### getViewAt

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract RemoteViews getViewAt (int position)
```

See `https://developer.android.com/reference/android/widget/Adapter#getView(int,%20android.view.View,%20android.view.ViewGroup)`. Note: expensive tasks can be safely performed synchronously within this method, and a loading view will be displayed in the interim. See `https://developer.android.com/reference/android/widget/RemoteViewsService.RemoteViewsFactory#getLoadingView()`.

<br />

| Parameters ||
|---|---|
| `position` | `int`: The position of the item within the Factory's data set of the item whose view we want. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/widget/RemoteViews` | A RemoteViews object corresponding to the data at the specified position. <br /> |

### getViewTypeCount

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract int getViewTypeCount ()
```

See `https://developer.android.com/reference/android/widget/Adapter#getViewTypeCount()`.

<br />

| Returns ||
|---|---|
| `int` | The number of types of Views that will be returned by this factory. <br /> |

### hasStableIds

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean hasStableIds ()
```

See `https://developer.android.com/reference/android/widget/Adapter#hasStableIds()`.

<br />

| Returns ||
|---|---|
| `boolean` | True if the same id always refers to the same object. <br /> |

### onCreate

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void onCreate ()
```

Called when your factory is first constructed. The same factory may be shared across multiple RemoteViewAdapters depending on the intent passed.

<br />

### onDataSetChanged

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void onDataSetChanged ()
```

Called when notifyDataSetChanged() is triggered on the remote adapter. This allows a RemoteViewsFactory to respond to data changes by updating any internal references. Note: expensive tasks can be safely performed synchronously within this method. In the interim, the old data will be displayed within the widget.

<br />

**See also:**

- `https://developer.android.com/reference/android/appwidget/AppWidgetManager#notifyAppWidgetViewDataChanged(int[],%20int)`

### onDestroy

Added in [API level 11](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void onDestroy ()
```

Called when the last RemoteViewsAdapter that is associated with this factory is unbound.

<br />