Android 위젯은 데이터를 표시하지 않습니다.

뱀시 크리슈나

위젯에 항목 (문자열) 목록을 표시해야하는 Android 애플리케이션을 만들고 있지만 어떤 이유로 작동하지 않습니다.

암호

위젯 성분

    package com.example.vamshi.baking.Widget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.RemoteViews;

import com.example.vamshi.baking.R;
import com.example.vamshi.baking.Widget.Service.WidgetService;

/**
 * Implementation of App Widget functionality.
 */
public class Ingredients extends AppWidgetProvider {

    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
                                int appWidgetId) {

        CharSequence widgetText = context.getString(R.string.appwidget_text);
        // Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.ingredients);


        // Instruct the widget manager to update the widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        // There may be multiple widgets active, so update all of them
        final int N = appWidgetIds.length;
        for (int i = 0; i<N; ++i) {
            RemoteViews remoteViews = updateWidgetListView(context,
                    appWidgetIds[i]);
            appWidgetManager.updateAppWidget(appWidgetIds[i],
                    remoteViews);
        }

    }

    private RemoteViews updateWidgetListView(Context context, int appWidgetId) {
        RemoteViews remoteViews = new RemoteViews(
                context.getPackageName(),R.layout.ingredients);

        //RemoteViews Service needed to provide adapter for ListView
        Intent svcIntent = new Intent(context, WidgetService.class);
        //passing app widget id to that RemoteViews Service
        svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        //setting a unique Uri to the intent
        //don't know its purpose to me right now
        svcIntent.setData(Uri.parse(
                svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
        //setting adapter to listview of the widget
        remoteViews.setRemoteAdapter(R.id.list_view_widget,
                svcIntent);

        return remoteViews;
    }

    @Override
    public void onEnabled(Context context) {
        // Enter relevant functionality for when the first widget is created
    }

    @Override
    public void onDisabled(Context context) {
        // Enter relevant functionality for when the last widget is disabled
    }
}

위젯 서비스

 package com.example.vamshi.baking.Widget.Service;

import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.widget.RemoteViewsService;

import com.example.vamshi.baking.Widget.WidgetViewAdapter;

/**
 * Created by Vamshi on 7/27/2017.
 */

public class WidgetService extends RemoteViewsService {

    @Override
    public RemoteViewsFactory onGetViewFactory(Intent intent) {
        int appWidgetID = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
        return (new WidgetViewAdapter(this.getApplicationContext(), intent));
    }
}

위젯보기 어댑터

    package com.example.vamshi.baking.Widget;

import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
import android.widget.Toast;

import com.example.vamshi.baking.Data.*;
import com.example.vamshi.baking.Data.Ingredients;
import com.example.vamshi.baking.R;
import com.example.vamshi.baking.Retrofit.IRecipe;
import com.example.vamshi.baking.Retrofit.RetrofitBuilder;

import java.util.ArrayList;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

/**
 * Created by Vamshi on 7/27/2017.
 */

public class WidgetViewAdapter implements RemoteViewsService.RemoteViewsFactory {

    Context context;
    ArrayList<Recipe> r;
    ArrayList<com.example.vamshi.baking.Data.Ingredients> i;
    private int appWidgetID;
    ArrayList<String> iList;

    public WidgetViewAdapter(Context c, Intent in){
        populate();
        this.context = c;
        appWidgetID = in.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);

    }

    private void populate() {

        IRecipe irecipie = RetrofitBuilder.Retrieve();
        final Call<ArrayList<Recipe>> recipie = irecipie.getRecipe();
        recipie.enqueue(new Callback<ArrayList<Recipe>>() {
            @Override
            public void onResponse(Call<ArrayList<Recipe>> call, Response<ArrayList<Recipe>> response) {
                r = response.body();
                i = r.get(0).getIngredients();
                for(int j = 0; j<=i.size(); j++){
                    iList.add(i.get(0).getIngredient());
                }
            }

            @Override
            public void onFailure(Call<ArrayList<Recipe>> call, Throwable t) {
                Toast.makeText(context, "No Internet Connection", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onCreate() {

        populate();
    }

    @Override
    public void onDataSetChanged() {

        IRecipe irecipie = RetrofitBuilder.Retrieve();
        final Call<ArrayList<Recipe>> recipie = irecipie.getRecipe();
        recipie.enqueue(new Callback<ArrayList<Recipe>>() {
            @Override
            public void onResponse(Call<ArrayList<Recipe>> call, Response<ArrayList<Recipe>> response) {
                r = response.body();
                i = r.get(0).getIngredients();
                for(int j = 0; j<=i.size(); j++){
                    iList.add(i.get(0).getIngredient());
                }
            }

            @Override
            public void onFailure(Call<ArrayList<Recipe>> call, Throwable t) {
                Toast.makeText(context, "No Internet Connection", Toast.LENGTH_SHORT).show();
            }
        });

    }

    @Override
    public void onDestroy() {

    }

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

    @Override
    public RemoteViews getViewAt(int position) {
        final RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.row);
        Ingredients in = i.get(position);
        remoteView.setTextViewText(R.id.text_for_widget, in.getIngredient());
        return remoteView;
    }

    @Override
    public RemoteViews getLoadingView() {
        return null;
    }

    @Override
    public int getViewTypeCount() {
        return 0;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }
}

명백한

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.vamshi.baking">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <service
        android:name=".WidgetService"
        android:permission="android.permission.BIND_REMOTEVIEWS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".UI.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".UI.SecondScreenDetails" />
        <activity android:name=".UI.StepsActivity" />
        <activity android:name=".UI.SingleStepItem" />

        <receiver android:name=".Widget.BakingWidget">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/baking_widget_info" />
        </receiver>
        <service
            android:name=".Widget.Service.WidgetService"
            android:permission="android.permission.BIND_REMOTEVIEWS" />

        <activity android:name=".UI.MasterDetailFlow" />

        <receiver android:name=".Widget.Ingredients">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/ingredients_info" />
        </receiver>
    </application>

</manifest>

레이아웃 파일

Ingredients.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/widget_margin">

    <ListView
        android:id="@+id/list_view_widget"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ListView>

</LinearLayout>

row.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_for_widget"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

미리 감사드립니다

뱀시 크리슈나

내 목표는 위젯에 문자열 목록을 표시하는 것이었고 위젯은 리사이클 러보기를 표시 할 수 없기 때문에 목록보기로 가야했습니다. 문제가 무엇인지 알아내는 데 많은 어려움이 있었지만 이를 수행하는 방법을 완벽하게 보여주는 놀라운 기사 나는 여기에 링크를 게시하고 있으므로 도움이 필요한 경우 이것을 참조 할 수 있습니다.

https://dharmangsoni.blogspot.in/2014/03/collection-widget-with-event-handling.html

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PyQt : QDataWidgetMapper는 위젯에 데이터를 표시하지 않습니다.

분류에서Dev

JSON은 데이터를 표시하지 않습니다.

분류에서Dev

QtableWidget은 데이터를 표시하지 않습니다.

분류에서Dev

JTable은 개체 [] [] 데이터를 표시하지 않습니다.

분류에서Dev

Android 앱 위젯 레이아웃에 버튼이 표시되지 않습니다.

분류에서Dev

데이터를 표시하지 않는 Yii2 GridView 위젯

분류에서Dev

Volley Android는 오류를 표시하지 않고 json의 데이터를 표시하지 않습니다.

분류에서Dev

내 Android 홈 화면 위젯이 표시되지만 업데이트되지 않습니다.

분류에서Dev

현지화 / 언어 환경 설정은 Android에서 위젯의 언어를 변경하지 않습니다.

분류에서Dev

데이터 가져 오기가 필요한 Android 위젯은로드 만 표시합니다.

분류에서Dev

Pandas to_html은 추가 된 데이터를 표시하지 않습니다.

분류에서Dev

highchart highstock은 전체 yAxis 데이터를 표시하지 않습니다.

분류에서Dev

ListView가있는 ConstraintLayout은 데이터를 표시하지 않습니다.

분류에서Dev

Laravel 8은 DB의 데이터를 표시하지 않습니다

분류에서Dev

Python Seaborn은 모든 데이터를 표시하지 않습니다.

분류에서Dev

선택 옵션은 데이터를 표시하지 않습니다

분류에서Dev

Android TextView는 데이터가 있어도 setText에 데이터를 표시하지 않습니다.

분류에서Dev

암호 해독 데이터를 표시하기위한 메시지 상자가 표시되지 않습니다.

분류에서Dev

Android M 권한은 "다시 묻지 않음"확인란이있는 옵션을 표시하지 않습니다.

분류에서Dev

AJAX 대상 파일은 업로드 처리를위한 데이터를 표시하지 않습니다.

분류에서Dev

kivmob은 Android 앱에 광고를 표시하지 않습니다 .python kivy

분류에서Dev

Android 4.3은 bxslider의 콘텐츠를 제대로 표시하지 않습니다.

분류에서Dev

Android 앱은 구문 분석 된 Jsoup 정보를 표시하지 않습니다.

분류에서Dev

위젯 시뮬레이터는 "오늘 확장"의 요소를 표시하지 않습니다.

분류에서Dev

데이터베이스에 연결된 목록은 데이터 JSP를 표시하지 않습니다.

분류에서Dev

Django 필드 위젯이 적절한 속성을 표시하지 않습니다.

분류에서Dev

컬렉션 (ListView)이있는 Android 위젯이 항목을 표시하지 않음

분류에서Dev

Android에서 탭 위젯 표시기의 높이를 설정하는 방법은 무엇입니까?

분류에서Dev

Android ArrayList 어댑터가 ListView를 표시하지 않습니다.

Related 관련 기사

  1. 1

    PyQt : QDataWidgetMapper는 위젯에 데이터를 표시하지 않습니다.

  2. 2

    JSON은 데이터를 표시하지 않습니다.

  3. 3

    QtableWidget은 데이터를 표시하지 않습니다.

  4. 4

    JTable은 개체 [] [] 데이터를 표시하지 않습니다.

  5. 5

    Android 앱 위젯 레이아웃에 버튼이 표시되지 않습니다.

  6. 6

    데이터를 표시하지 않는 Yii2 GridView 위젯

  7. 7

    Volley Android는 오류를 표시하지 않고 json의 데이터를 표시하지 않습니다.

  8. 8

    내 Android 홈 화면 위젯이 표시되지만 업데이트되지 않습니다.

  9. 9

    현지화 / 언어 환경 설정은 Android에서 위젯의 언어를 변경하지 않습니다.

  10. 10

    데이터 가져 오기가 필요한 Android 위젯은로드 만 표시합니다.

  11. 11

    Pandas to_html은 추가 된 데이터를 표시하지 않습니다.

  12. 12

    highchart highstock은 전체 yAxis 데이터를 표시하지 않습니다.

  13. 13

    ListView가있는 ConstraintLayout은 데이터를 표시하지 않습니다.

  14. 14

    Laravel 8은 DB의 데이터를 표시하지 않습니다

  15. 15

    Python Seaborn은 모든 데이터를 표시하지 않습니다.

  16. 16

    선택 옵션은 데이터를 표시하지 않습니다

  17. 17

    Android TextView는 데이터가 있어도 setText에 데이터를 표시하지 않습니다.

  18. 18

    암호 해독 데이터를 표시하기위한 메시지 상자가 표시되지 않습니다.

  19. 19

    Android M 권한은 "다시 묻지 않음"확인란이있는 옵션을 표시하지 않습니다.

  20. 20

    AJAX 대상 파일은 업로드 처리를위한 데이터를 표시하지 않습니다.

  21. 21

    kivmob은 Android 앱에 광고를 표시하지 않습니다 .python kivy

  22. 22

    Android 4.3은 bxslider의 콘텐츠를 제대로 표시하지 않습니다.

  23. 23

    Android 앱은 구문 분석 된 Jsoup 정보를 표시하지 않습니다.

  24. 24

    위젯 시뮬레이터는 "오늘 확장"의 요소를 표시하지 않습니다.

  25. 25

    데이터베이스에 연결된 목록은 데이터 JSP를 표시하지 않습니다.

  26. 26

    Django 필드 위젯이 적절한 속성을 표시하지 않습니다.

  27. 27

    컬렉션 (ListView)이있는 Android 위젯이 항목을 표시하지 않음

  28. 28

    Android에서 탭 위젯 표시기의 높이를 설정하는 방법은 무엇입니까?

  29. 29

    Android ArrayList 어댑터가 ListView를 표시하지 않습니다.

뜨겁다태그

보관