RecyclerView возвращает ноль при возобновлении активности - PullRequest
0 голосов
/ 22 мая 2018

У меня есть recyclerView, который отлично работает при запуске активности.Когда из этого действия я перехожу к другому и возвращаюсь, окно реселлера пусто.Он ничего не показывает, однако иногда он возвращает значения, но макет нарушен, т. Е. Между элементами будут либо пробелы, либо макет будет иметь большой пробел в верхней части действия.

Код для класса:

public class product_page extends AppCompatActivity {

  FirebaseAuth mAuth;
  String s, product;
  ProgressDialog progressDialog;
  private RecyclerView recyclerView;
  FirebaseDatabase firebaseDatabase;
  DatabaseReference databaseReference;
  DatabaseReference db;
  FirebaseRecyclerAdapter<ProductItemsConstructor, productViewHolder> FirebaseAdapter;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_product_page);

        Intent intent = getIntent();
        s = intent.getExtras().getString("pos");
        product = intent.getExtras().getString("product");

    mAuth = FirebaseAuth.getInstance();
    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = FirebaseDatabase.getInstance().getReference();

    RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
   // RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView1);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());


    Query query = firebaseDatabase.getReference().child("Products").child(s).child(product).orderByKey();

    FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<ProductItemsConstructor>().setQuery(query,ProductItemsConstructor.class).build();

    FirebaseAdapter = new FirebaseRecyclerAdapter<ProductItemsConstructor, productViewHolder>(options) {


        @Override
        public productViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_items,parent,false);
            return new productViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull productViewHolder holder, int position, @NonNull ProductItemsConstructor model) {
            holder.Heading(model.getHeading());
            holder.Price(model.getPrice());
            holder.Prates(model.getPprice());
            holder.Rating(model.getRating());
            holder.setImg(getApplicationContext(),model.getImageUrl());
        }
    };
    recyclerView.setAdapter(FirebaseAdapter);

}


@Override
protected void onStart() {
    super.onStart();

    FirebaseAdapter.startListening();
    recyclerView.setAdapter(FirebaseAdapter);
}

@Override
protected void onStop() {
    super.onStop();
    FirebaseAdapter.stopListening();
}

@Override
protected void onResume() {
    super.onResume();

    FirebaseAdapter.notifyDataSetChanged();
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent in = new Intent(product_page.this, MainActivity.class);
    startActivity(in);
}

public class productViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView head, rate, Prate, rating;
    ImageView img;


    public productViewHolder(final View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
    }

    private void Heading(String heading) {
        head = (TextView) itemView.findViewById(R.id.Pheading);
        head.setText(heading);
    }

    private void Price(String price) {
        rate = (TextView) itemView.findViewById(R.id.Pprice);
        rate.setText(price);
    }

    private void Prates(String prate){
        Prate = (TextView)itemView.findViewById(R.id.pRate);
        Prate.setText(prate);
    }

    private void Rating(String rting){
        rating = (TextView)itemView.findViewById(R.id.Rating);
        rating.setText(rting);
    }

    private void setImg(Context ctx, String img1) {
        img = (ImageView) itemView.findViewById(R.id.PImage);
        Picasso.with(ctx).load(img1).placeholder(R.drawable.notification).into(img);
        // progressDialog.dismiss();
    }
}

Это изображение при первом запуске действия

введите описание изображения здесь

Это изображение при возобновлении действия

введите описание изображения здесь

журнал показан ниже

$ adb shell am start -n "com.strease.user.strease / com.strease.user.strease.SplashScreen "-a android.intent.action.MAIN -c android.intent.category.LAUNCHER Клиент еще не готов ... Ожидание запуска процесса в сети Подключено к процессу 22007 на устройстве motorola-moto_g__4_-ZY223L3X8L Захват и отображение сообщений logcat из приложения.Это поведение можно отключить в разделе «Выход Logcat» на странице настроек «Отладчик».W / System: ClassLoader ссылается на неизвестный путь: /data/app/com.strease.user.strease-2/lib/arm W / DynamiteModule: класс дескриптора локального модуля для com.google.firebase.auth не найден.W / DynamiteModule: класс дескриптора локального модуля для com.google.firebase.auth не найден.I / BiChannelGoogleApi: [FirebaseAuth:] Нет резервного модуля;НЕ настраивается на отложенную инициализацию. D / FirebaseAuth: Уведомление слушателей маркера id о пользователе (1wU7rrZpvLRCJeXeRITJkIXTu492).D / FirebaseApp: com.google.firebase.crash.FirebaseCrash не связан.Пропуск инициализации.V / FA: отмена работы.JobID: 1598141556 W / DynamiteModule: класс дескриптора локального модуля для com.google.firebase.auth не найден.V / FA: обратный вызов жизненного цикла зарегистрированной активности. I / FirebaseInitProvider: инициализация FirebaseApp выполнена успешно. W / art: до Android 4.1, метод android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter (android.graphics.orter.Filitor).res.ColorStateList, android.graphics.PorterDuff $ Mode) неверно переопределил бы метод private-пакета в android.graphics.drawable.Drawable V / FA: onActivityCreated I / FirebaseAuth: [FirebaseAuth:] Загрузка модуля через FirebaseOptions.I / FirebaseAuth: [FirebaseAuth:] Подготовка к созданию подключения службы к реализации gms V / FA: сбор приложений включен в пакет, идентификатор приложения Google: com.strease.user.strease, 1: 841596997979: android: 0ece7b89e3bda9c3 I / FA: измерение приложениязапускается, версия: 11910 Чтобы включить запуск ведения журнала отладки: adb shell setprop log.tag.FA VERBOSE Чтобы включить более быстрый запуск записи событий в режиме отладки: adb shell setprop debug.firebase.analytics.app com.strease.user.strease D /FA: ведение журнала сообщений на уровне отладки. V / FA: подключение к удаленной службе. V / FA: попытка подключения уже выполняется. V / FA: попытка подключения уже выполняется. Операция возобновлена, время: 33782085 I / FA: Диспетчер тегов не найден итаким образом не будет использоваться D / FA: Событие регистрации (FE): screen_view (_vs), Bundle [{firebase_event_origin (_o) = auto, firebase_screen_class (_sc) = SplashScreen, firebase_screen_id (_si) = - 132049841330100120}] D: FirebaseУведомление слушателей о состоянии авторизации.D / FirebaseApp: уведомлено 0 слушателей состояния авторизации.I / Adreno: QUALCOMM build: 7d18700, I8ee426a9a2 Дата сборки: 10.07.16 Версия компилятора шейдера OpenGL ES: XE031.09.00.03 Локальная ветвь: mybranch22308589 Удаленная ветвь: quic / LA.BR.1.3.6_rb1.6 Удаленная ветвь:НЕТ Восстановить ветвь: НИЧЕГО V / FA: попытка подключения уже выполняется I / OpenGLRenderer: Инициализированный EGL, версия 1.4D / OpenGLRenderer: поведение подкачки 1 D / FA: подключено к удаленному сервису V / FA: обработка поставленных в очередь задач сервиса: 4 V / FA: запись участия пользователя, мс: 4017 V / FA: активность приостановлена, время: 33786100 D / FA: Событие записи в журнал (FE): user_engagement (_e), Bundle [{firebase_event_origin (_o) = auto, engagement_time_msec (_et) = 4017, firebase_screen_class (_sc) = SplashScreen, firebase_screen_id (_si) = - 1320498A.Actioned: FA20: VAC, вып.V / FA: onActivityCreated I / DynamiteModule: с учетом локального модуля com.google.android.gms.firebase_database: 4 и удаленного модуля com.google.android.gms.firebase_database: 6 V / FA: активность возобновлена, время: 33786801 I / DynamiteModule: Выбранная удаленная версия com.google.android.gms.firebase_database, версия> = 6 D / FA: регистрация событий (FE): screen_view (_vs), Bundle [{firebase_event_origin (_o) = auto, firebase_previous_class (_pc) = SplashScreen, firebase_previous_id (_pi) = - 132049841330100120, firebase_screen_class (_sc) = MainActivity, firebase_screen_id (_si) = - 132049841330100119}] W / System: ClassLoader ссылается на неизвестный путь: W / System: ClassLoader ссылается на неизвестный путь: /data/user_de/0/com.google.android.gms/app_chimera/m/000000cd/n/armeabi-v7a W / System: ClassLoader ссылается на неизвестный путь: /data/user_de/0/com.google.android.gms/app_chimera/m/000000cd/n/armeabi W / BiChannelGoogleApi: [FirebaseAuth:] getGoogleApiForMethod () вернул Gms W / BiChannelGoogleApi: [FirebaseAuth:) getGohoto (): getGGms D / FirebaseAuth: Уведомление слушателей токена id о пользователе (1wU7rrZpvLRCJeXeRITJkIXTu492).D / NetworkSecurityConfig: Конфигурация безопасности сети не указана, используется платформа по умолчанию. D / FirebaseApp: Уведомление слушателей состояния авторизации.D / FirebaseApp: уведомлены 1 слушатели состояния авторизации.D / FirebaseAuth: Уведомление слушателей маркера id о пользователе (1wU7rrZpvLRCJeXeRITJkIXTu492).D / FirebaseApp: Уведомление слушателей состояния авторизации.D / FirebaseApp: уведомлены 1 слушатели состояния авторизации.W / ClassMapper: в классе com.strease.user.strease.userInfoConstructor не найден установщик / поле для токена FCM. Не найден установщик / поле для номера, найденного в классе. Com.strease.user.strease.userInfoConstructor Не установлено поле / установщик для электронной почты в классеcom.strease.user.strease.userInfoConstructor W / Settings: установка plane_mode_on перемещена из android.provider.Settings.System в android.provider.Settings.Global, возвращая значение только для чтения.I / art: выполнить частичный сбор кеша кода, код = 18KB, данные = 30KB I / art: после сбора кеша кода, code = 13KB, data = 27KB Увеличение емкости кеша кода до 128KB V / FA: бездействие, отключение от службы V/ FA: сеанс запущен, время: 33792791 D / FA: событие записи в журнал (FE): запуск сеанса (_s), пакет [{firebase_event_origin (_o) = auto, firebase_screen_class (_sc) = MainActivity, firebase_screen_id (_si) = - 132049841330100119V / FA: подключение к удаленному сервису. D / FA: подключение к удаленному сервису. V / FA: обработка поставленных в очередь сервисных задач: 1 V / FA: бездействие, отключение от сервиса. V / FA: запись участия пользователя, мс: 23339 В /FA: подключение к удаленному сервису. V / FA: действие приостановлено, время: 33810138 D / FA: событие регистрации (FE): user_engagement (_e), Bundle [{firebase_event_origin (_o) = auto, engagement_time_msec (_et) = 23339, firebase_screen_class (_sc) = MainActivity, firebase_screen_id (_si) = - 132049841330100119}] V / FA: onActivityCreated V / FA: попытка подключения уже выполняется V / FA: попытка подключения alrВ процессе выполнения V / FA: Активность возобновлена, время: 33810224 D / FA: Событие записи в журнал (FE): screen_view (_vs), Bundle [{firebase_event_origin (_o) = auto, firebase_previous_class (_pc) = MainActivity, firebase_previous_id (_pi) =-132049841330100119, firebase_screen_class (_sc) = product_page, firebase_screen_id (_si) = - 132049841330100118}] V / FA: попытка подключения уже выполняется D / FA: подключена к удаленному сервису V / FA: обработка поставлена ​​в очередь сервисных задач: 4 I / art: Сделать частичный сбор кеша кода, код = 42 КБ, данные = 62 КБI / art: После сбора кеша кода, код = 42 КБ, данные = 62 КБ Увеличение емкости кеша кода до 256 КБслужба V / FA: действие приостановлено, время: 33820442 D / FA: регистрация событий (FE): user_engagement (_e), Bundle [{firebase_event_origin (_o) = auto, engagement_time_msec (_et) = 10218, firebase_screen_class (_sc) = product_page,firebase_screen_id (_si) = - 132049841330100118}] V / FA: onActivityCreated I / TextInputLayout: добавленный EditText не является TextInputEditText.Пожалуйста, переключитесь на использование этого класса.V / FA: попытка подключения уже выполняется W / AllCapsTransformationMethod: вызывающая сторона не включила изменения длины;не преобразует текст Caller не разрешает изменение длины;не преобразует текст I / TextInputLayout: добавленный EditText не является TextInputEditText.Пожалуйста, переключитесь на использование этого класса.V / FA: попытка подключения уже выполняется. Операция возобновлена, время: 33821178 D / FA: Событие записи в журнал (FE): screen_view (_vs), Bundle [{firebase_event_origin (_o) = auto, firebase_previous_class (_pc) = product_page, firebase_previous_id (_pi) = - 132049841330100118, firebase_screen_class (_sc) = Checkout_page, firebase_screen_id (_si) = - 132049841330100117}] V / FA: попытка подключения уже выполняется D / FA: подключена к удаленному сервису V / FA: обработка поставленных в очередь задач обслуживания: 4 В/ FA: бездействие, отключение от службы. V / FA: запись участия пользователя, мс: 18503 V / FA: подключение к удаленной услуге. V / FA: активность приостановлена, время: 33839680 D / FA: событие регистрации (FE): user_engagement (_e), Bundle [{firebase_event_origin (_o) = auto, engagement_time_msec (_et) = 18503, firebase_screen_class (_sc) = Checkout_page, firebase_screen_id (_si) = - 132049841330100117}] V / FA: попытка подключения уже выполняетсяV / FA: действие возобновлено, время: 33839706 D / FA: регистрация события (FE): представление экрана (_vs)), Bundle [{firebase_event_origin (_o) = auto, firebase_previous_class (_pc) = Checkout_page, firebase_previous_id (_pi) = - 132049841330100117, firebase_screen_class (_sc) = product_page, firebase_screen_id:) 1349 (уже): пробная версия 1340 (840) = 1300в процессе D / FA: подключен к удаленному сервису V / FA: обработка поставленных в очередь сервисных задач: 4 V / FA: бездействие, отключение от сервиса

Любая помощь или расширение приветствуются. Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вносите только эти изменения в метод onResume ().

@Override
protected void onResume() {
super.onResume();

   //FirebaseAdapter.notifyDataSetChanged();
   getData();
   }
}
private void getData() {
    RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(2, android.support.v7.widget.StaggeredGridLayoutManager.VERTICAL);
    // RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView = (android.support.v7.widget.RecyclerView) findViewById(R.id.recyclerView1);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new android.support.v7.widget.DefaultItemAnimator());

    Query query = firebaseDatabase.getReference().child("Products").child(s).child(product).orderByKey();

    FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<ProductItemsConstructor>().setQuery(query, ProductItemsConstructor.class).build();

    FirebaseAdapter = new FirebaseRecyclerAdapter<ProductItemsConstructor, productViewHolder>(options) {

        @Override
        public productViewHolder onCreateViewHolder(android.view.ViewGroup parent, int viewType) {
            View view = android.view.LayoutInflater.from(parent.getContext()).inflate(R.layout.product_items, parent, false);
            return new productViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@android.support.annotation.NonNull productViewHolder holder, int position, @android.support.annotation.NonNull ProductItemsConstructor model) {
            holder.Heading(model.getHeading());
            holder.Price(model.getPrice());
            holder.Prates(model.getPprice());
            holder.Rating(model.getRating());
            holder.setImg(getApplicationContext(), model.getImageUrl());
        }
    };
    recyclerView.setAdapter(FirebaseAdapter);
    FirebaseAdapter.notifyDataSetChanged();
}
0 голосов
/ 22 мая 2018

Попробуйте с этим кодом:

public class product_page extends AppCompatActivity {


FirebaseAuth mAuth;
String s, product;
ProgressDialog progressDialog;
private RecyclerView recyclerView;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
DatabaseReference db;
FirebaseRecyclerAdapter<ProductItemsConstructor, productViewHolder> FirebaseAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_product_page);

        Intent intent = getIntent();
        s = intent.getExtras().getString("pos");
        product = intent.getExtras().getString("product");

    mAuth = FirebaseAuth.getInstance();
    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = FirebaseDatabase.getInstance().getReference();

    RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
   // RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView1);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());


    Query query = firebaseDatabase.getReference().child("Products").child(s).child(product).orderByKey();

    FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<ProductItemsConstructor>().setQuery(query,ProductItemsConstructor.class).build();

    FirebaseAdapter = new FirebaseRecyclerAdapter<ProductItemsConstructor, productViewHolder>(options) {


        @Override
        public productViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_items,parent,false);
            return new productViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull productViewHolder holder, int position, @NonNull ProductItemsConstructor model) {
            holder.Heading(model.getHeading());
            holder.Price(model.getPrice());
            holder.Prates(model.getPprice());
            holder.Rating(model.getRating());
            holder.setImg(getApplicationContext(),model.getImageUrl());
        }
    };
    recyclerView.setAdapter(FirebaseAdapter);

}


@Override
protected void onStart() {
    super.onStart();

    FirebaseAdapter.startListening();
    recyclerView.setAdapter(FirebaseAdapter);
}

@Override
protected void onDestroy() {
    FirebaseAdapter.stopListening();
    super.onDestroy();
}

@Override
protected void onResume() {
    super.onResume();

    FirebaseAdapter.notifyDataSetChanged();
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent in = new Intent(product_page.this, MainActivity.class);
    startActivity(in);
}

public class productViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView head, rate, Prate, rating;
    ImageView img;


    public productViewHolder(final View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
    }

    private void Heading(String heading) {
        head = (TextView) itemView.findViewById(R.id.Pheading);
        head.setText(heading);
    }

    private void Price(String price) {
        rate = (TextView) itemView.findViewById(R.id.Pprice);
        rate.setText(price);
    }

    private void Prates(String prate){
        Prate = (TextView)itemView.findViewById(R.id.pRate);
        Prate.setText(prate);
    }

    private void Rating(String rting){
        rating = (TextView)itemView.findViewById(R.id.Rating);
        rating.setText(rting);
    }

    private void setImg(Context ctx, String img1) {
        img = (ImageView) itemView.findViewById(R.id.PImage);
        Picasso.with(ctx).load(img1).placeholder(R.drawable.notification).into(img);
        // progressDialog.dismiss();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...