Чтобы проверить, пуст ли ArrayList - PullRequest
1 голос
/ 09 октября 2019

Я пытаюсь проверить, является ли мой сохраненный ArrayList пустым или нет, когда я запускаю код:

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        Intent intent = this.getIntent();
        String title = intent.getStringExtra(NotePad.EXTRA_MESSAGE);
        notes.add(title);
        Log.d("testt", "notes: " + notes);

        if(title != null) {
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor editor = prefs.edit();
            Gson gson = new Gson();
            String json = gson.toJson(notes);
            editor.putString(Key, json);
            editor.apply();
            Log.d("ans", "notes: " + notes);
        }

        int t = CheckSharedPreferences();
        Log.d("testt","t: "+t);
}

int CheckSharedPreferences() {
    ArrayList<String> test = new ArrayList<String>();

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
    Gson gson = new Gson();
    String json = prefs.getString(Key, null);
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    test = gson.fromJson(json, type);

    Log.d("testt", "test " + test);

    if(test == null) {
        return 1;
    } else {
        return 0;
    }
}

Этот метод всегда возвращает 0, даже если список пуст.

Это фрагмент из журнала:

10-10 01:12:38.254 19365-19365/com.example.quicknote D/testt: notes: [null]
10-10 01:12:38.281 19365-19365/com.example.quicknote D/testt: test[null]
10-10 01:12:38.281 19365-19365/com.example.quicknote D/testt: t: 0

Ответы [ 4 ]

1 голос
/ 09 октября 2019

Проверка ваших журналов, кажется,

test = gson.fromJson(json, type);

возвращает список с нулем в качестве первого / единственного элемента.

вы должны проверить эти три условия внутри, если:

if ( test == null || test.isEmpty() || test.get(0) == null ) { return 1;}
0 голосов
/ 09 октября 2019

Попробуйте test.isEmpty() вместо test == null

0 голосов
/ 09 октября 2019

Кроме того, вы также можете проверить с помощью метода .size (). Список, который не пуст, будет иметь размер больше нуля

if (test.size()>0){
//execute your code
}
0 голосов
/ 09 октября 2019

test никогда не бывает null, поскольку ранее вы присвоили объект этой переменной: ArrayList<String> test = new ArrayList<String>();

Попробуйте вместо этого: if(test.isEmpty())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...