Данные из магазина не отображаются в виджете - PullRequest
0 голосов
/ 19 марта 2020

У меня есть виджет ведьмы. Я получаю некоторые данные из магазина и отображаю их в виджете стека. Данные получаются правильно, но не отображаются в стеке. Когда я добавляю некоторые данные программно для тестирования, они отображаются правильно. Но когда я получаю данные из firestore - даже если данные получаются, потому что я добавил тостовое сообщение, чтобы увидеть , и правильно получено, данные не показаны. Как решить эту проблему?

Это мой код:

public class TaksWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
    return new TaskWidgetItemFactory(getApplicationContext(),intent);
}

class TaskWidgetItemFactory implements RemoteViewsFactory {
    private Context context;
    private int appWidgetId;
    private List<Task> taskList = new ArrayList<>();

    private FirebaseFirestore firestore = FirebaseFirestore.getInstance();
    private CollectionReference collectionReference = firestore.collection("Users")
            .document(FirebaseAuth.getInstance().getCurrentUser().getUid())
            .collection("Tasks");

    public TaskWidgetItemFactory (Context context,Intent intent){
        this.context = context;
        this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    @Override
    public void onCreate() {
        collectionReference.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                if (e != null){
                    //error
                } else {
                    for (QueryDocumentSnapshot queryDocumentSnapshot : queryDocumentSnapshots){
                        Task task = queryDocumentSnapshot.toObject(Task.class);
                        Toast.makeText(context, task.getName(), Toast.LENGTH_SHORT).show();
                        taskList.add(task);
                    }
                }
            }
        });

    }

    @Override
    public void onDataSetChanged() {
        /* add limit */

    }

    @Override
    public void onDestroy() {
     /* close the firebase */

    }

    @Override
    public int getCount() {
        return taskList.size();
    }

    @Override
    public RemoteViews getViewAt(int position) {
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_item);
        remoteViews.setTextViewText(R.id.widget_text_view_task_name,taskList.get(position).getName());
        return remoteViews;
    }

    @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 true;
    }
} }
...