Ответ 1
Мне пришлось удалить
android:minHeight="?attr/dropdownListPreferredItemHeight"
из макета элемента списка, чтобы сделать эту работу
Чтобы начать, изображение произносит тысячи слов:
Это происходит, хотя getViewAt называется 4 элементами, так как мой размер курсора.
Здесь код:
public class WidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
System.out.println("Factory");
return(new WidgetViewsFactory(this.getApplicationContext(), intent));
}
}
Поставщик виджета:
public class WidgetViewsFactory implements RemoteViewsService.RemoteViewsFactory, LNTConstants
{
private Context context = null;
ArrayList<DBItemModel> items;
public WidgetViewsFactory(Context context, Intent intent) {
this.context = context;
Cursor c = Items.get(context, where);
items = Items.getFromCursor(c);
}
@Override
public void onCreate() {
/*
*/
}
@Override
public void onDestroy() {
}
@Override
public int getCount() {
if(items != null) {
System.out.println("Count: " + items.size());
return items.size();
}
return 0;
}
@Override
public RemoteViews getViewAt(int position) {
System.out.println("getViewAt: " + position);
ItemBean item = items.get(position);
RemoteViews row = new RemoteViews(context.getPackageName(), R.layout.item_list);
row.setTextViewText(R.id.tvListItem, item.summary);
System.out.println("Widget item title: " + item.summary);
return row;
}
@Override
public RemoteViews getLoadingView() {
return null;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public void onDataSetChanged() {
// no-op
}
}
Разметка:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants">
<TextView
android:id="@+id/tvListItem"
style="@style/text_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="?attr/dropdownListPreferredItemHeight" />
</RelativeLayout>
У моих 4 элементов определенно нет загрузки текста, и я не знаю, откуда это происходит.
Может ли кто-нибудь указать, что я делаю неправильно?
Спасибо
Мне пришлось удалить
android:minHeight="?attr/dropdownListPreferredItemHeight"
из макета элемента списка, чтобы сделать эту работу
Этот ответ помог мне fooobar.com/questions/612025/...
Мне пришлось возвращать 1 вместо 0 из метода getViewTypeCount() моего класса remoteViewsFactory
Проверьте, используете ли вы не поддерживаемое представление.
В моем случае я использовал View
в своем макете как разделитель. и не понимал, что это не один из поддерживаемых просмотров.
Я просто удалил его, и виджет вел себя так, как ожидалось.
Я также пришел сюда, чтобы сказать это:
Я установил фон элемента списка на
?attr/selectableitembackground
Если у кого-то такая же проблема, как эта, и если вы используете настраиваемый модуль запуска, попробуйте вместо этого использовать модуль запуска по умолчанию.