notifydatasetchanged не работает после закрытия приложения? - PullRequest
0 голосов
/ 28 мая 2020

Мой код следующий. У меня есть пара классов, и когда кто-то хочет обновить, это не работает. В чем может быть проблема? Я много проверял, и приложение закрывается = arrayAdapter.notifyDataSetChanged ();

public class CardArrayAdapter extends ArrayAdapter<Card> {


    public CardArrayAdapter(Context context, int resource,List<Card> objects) {
        super(context, resource, objects);
    }

    @NonNull
    @Override
    public View getView(int position,View convertView, ViewGroup parent) {
       Card card = getItem(position);
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.item,parent,false);
        TextView textView = convertView.findViewById(R.id.ItemTextView);
        ImageView imageView = convertView.findViewById(R.id.ItemImageView);
        textView.setText(card.name);
        Glide.with(getContext()).load(card.photoURL).into(imageView);
        return convertView;
    }
}

Основной класс

ArrayList<Card> list;
CardArrayAdapter arrayAdapter;
public void loadsCards(){
        list=new ArrayList<Card>();
         String name = dataSnapshot.child("name").getValue().toString();
                                    String photoURL = dataSnapshot.child("photo").getValue().toString();
                                    String uid = dataSnapshot.getKey();
                                    Card card = new Card(uid,photoURL,name);
                                    Toast.makeText(getActivity(), "sonuc:"+card.name, Toast.LENGTH_LONG).show();
                                   list.add(card);
                       arrayAdapter.notifyDataSetChanged(); //closes here
                                  }

Ответы [ 2 ]

1 голос
/ 01 июня 2020

// Я решил проблему. list=new ArrayList<Card>(); // добавляем код arrayAdapter=new CardArrayAdapter(this.getContext(),list.size(),list);

0 голосов
/ 28 мая 2020

Я полагаю, вы пытаетесь использовать RecyclerView и заполнить его своим arrayAdapter. У вас отсутствует инструкция, инструктирующая представление ресайклера использовать адаптер.

Попробуйте добавить это и проверьте, работает

recyclerView.setAdapter(arrayAdapter);
arrayAdapter.notifyDataSetChanged();

Если вы используете какие-либо другие представления, такие как ListView, вам необходимо настроить на это свой адаптер.

listView.setAdapter(arrayAdapter);
arrayAdapter.notifyDataSetChanged();

Если вы не используете какие-либо представления, вы можете Не заполняйте ваши данные. Пожалуйста, проверьте эту статью для получения дополнительной информации о ArrayAdapter: ArrayAdapter с ListView , ArrayAdapter с RecyclerView

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