Widget с определенными TextView

514
31 декабря 2016, 14:29

Как показывать только те TextView, которые нужно?

public class NewAppWidget extends AppWidgetProvider {
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
        CharSequence widgetAdr = NewAppWidgetConfigureActivity.loadAdrPref(context, appWidgetId);
        CharSequence widgetTime = NewAppWidgetConfigureActivity.loadTimePref(context, appWidgetId);
        CharSequence widgetDesc = NewAppWidgetConfigureActivity.loadDescPref(context, appWidgetId);
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
        if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("chkadr", true)) views.setTextViewText(R.id.appwidget_adress, widgetAdr);
        else if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("chktime", true)) views.setTextViewText(R.id.appwidget_time, widgetTime);
        else if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("chkdesc", true)) views.setTextViewText(R.id.appwidget_desc, widgetDesc);
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        for (int appWidgetId : appWidgetIds) {
            updateAppWidget(context, appWidgetManager, appWidgetId);
        }
    }
    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        for (int appWidgetId : appWidgetIds) {
            NewAppWidgetConfigureActivity.deleteAdrPref(context, appWidgetId);
            NewAppWidgetConfigureActivity.deleteTimePref(context, appWidgetId);
            NewAppWidgetConfigureActivity.deleteDescPref(context, appWidgetId);
        }
    }
}
public class NewAppWidgetConfigureActivity extends Activity {
    private static final String PREFS_NAME = ".NewAppWidget";
    private static final String PREF_PREFIX_KEY = "appwidget_";
    int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
    CheckBox chkAdr, chkTime, chkDesc;
    public NewAppWidgetConfigureActivity() {
        super();
    }
    static void saveAdrPref(Context context, int appWidgetId, String text) {
        context.getSharedPreferences(PREFS_NAME, 0).edit().putString(PREF_PREFIX_KEY + appWidgetId, text).apply();
    }
    static String loadAdrPref(Context context, int appWidgetId) {
        SharedPreferences adr = context.getSharedPreferences(PREFS_NAME, 0);
        String titleValue = adr.getString(PREF_PREFIX_KEY + appWidgetId, null);
        if (titleValue != null) return titleValue;
        else return context.getString(R.string.appwidget_adress);
    }
    static void deleteAdrPref(Context context, int appWidgetId) {
        context.getSharedPreferences(PREFS_NAME, 0).edit().remove(PREF_PREFIX_KEY + appWidgetId).apply();
    }
    static void saveTimePref(Context context, int appWidgetId, String text) {
        context.getSharedPreferences(PREFS_NAME, 0).edit().putString(PREF_PREFIX_KEY + appWidgetId, text).apply();
    }
    static String loadTimePref(Context context, int appWidgetId) {
        SharedPreferences time = context.getSharedPreferences(PREFS_NAME, 0);
        String titleValue = time.getString(PREF_PREFIX_KEY + appWidgetId, null);
        if (titleValue != null) return titleValue;
        else return context.getString(R.string.appwidget_time);
    }
    static void deleteTimePref(Context context, int appWidgetId) {
        context.getSharedPreferences(PREFS_NAME, 0).edit().remove(PREF_PREFIX_KEY + appWidgetId).apply();
    }
    static void saveDescPref(Context context, int appWidgetId, String text) {
        context.getSharedPreferences(PREFS_NAME, 0).edit().putString(PREF_PREFIX_KEY + appWidgetId, text).apply();
    }
    static String loadDescPref(Context context, int appWidgetId) {
        SharedPreferences desc = context.getSharedPreferences(PREFS_NAME, 0);
        String titleValue = desc.getString(PREF_PREFIX_KEY + appWidgetId, null);
        if (titleValue != null) return titleValue;
        else return context.getString(R.string.appwidget_desc);
    }
    static void deleteDescPref(Context context, int appWidgetId) {
        context.getSharedPreferences(PREFS_NAME, 0).edit().remove(PREF_PREFIX_KEY + appWidgetId).apply();
    }
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setResult(RESULT_CANCELED);
        setContentView(R.layout.new_app_widget_configure);
        chkAdr = (CheckBox) findViewById(R.id.checkBoxAdr);
        chkAdr.setChecked(false);
        chkTime = (CheckBox) findViewById(R.id.checkBoxTime);
        chkTime.setChecked(false);
        chkDesc = (CheckBox) findViewById(R.id.checkBoxDesc);
        chkDesc.setChecked(false);
        findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                final Context context = NewAppWidgetConfigureActivity.this;
                switch (v.getId()) {
                    case R.id.checkBoxAdr:
                        if (chkAdr.isChecked()) {
                            PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().clear().apply();
                            PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().putBoolean("chkadr", true).apply();
                            saveAdrPref(context, mAppWidgetId, getString(R.string.appwidget_adress));
                        }
                        break;
                    case R.id.checkBoxTime:
                        if (chkTime.isChecked()) {
                            PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().clear().apply();
                            PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().putBoolean("chktime", true).apply();
                            saveTimePref(context, mAppWidgetId, getString(R.string.appwidget_time));
                        }
                        break;
                    case R.id.checkBoxDesc:
                        if (chkDesc.isChecked()) {
                            PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().clear().apply();
                            PreferenceManager.getDefaultSharedPreferences(NewAppWidgetConfigureActivity.this).edit().putBoolean("chkdesc", true).apply();
                            saveDescPref(context, mAppWidgetId, getString(R.string.appwidget_desc));
                        }
                        break;
                }
                NewAppWidget.updateAppWidget(context, AppWidgetManager.getInstance(context), mAppWidgetId);
                setResult(RESULT_OK, new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId));
                finish();
            }
        });
        Bundle extras = getIntent().getExtras();
        if (extras != null) mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
        if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) finish();
    }
}

P.S. Вроде бы все в жизни попробовал, но Widget для меня стал просто новым космосом.

В связи с этим - Я вообще правильно делаю? или такое нельзя сделать?

READ ALSO
Как открыть Activity поверх другого активити?

Как открыть Activity поверх другого активити?

Есть приложения с несколькими экранами и активностямиКак можно сделать так, чтобы открывая активити2 оно не прекращало работу активити1,...

526
SQL скрипт для создания БД

SQL скрипт для создания БД

Решаю тестовое задание и у меня там есть такой пункт:

739
Android spinner

Android spinner

Я получаю значение для spinner из базы данных на сервере и храню его в ArrayList:

485