как вернуть назад положение прокрутки списка при нажатии на кнопку из другого действия - PullRequest
1 голос
/ 21 июня 2019

Я создаю простое музыкальное приложение, когда я щелкаю по любому элементу в Custom Listview, когда он открывает новое действие, и когда я нажимаю кнопку «Назад», показывая список сверху.

Мне нужна позиция listView, где я нажимаю или гдеЯ

        //Getting List view.....
          listView = (ListView) findViewById(R.id.MyListView);
          myroot = FirebaseDatabase.getInstance().getReference("all");
        readVariable = new ArrayList<>();
        //Ends...............

        // save index and top position
        int index = listView.getFirstVisiblePosition();
        View v = listView.getChildAt(0);
        int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());

        // restore index and position
        listView.setSelectionFromTop(index, top);

    }




    //FireBase Work>>>>>>>>>>>>>>>>>>>
    @Override
    protected void onStart() {
        super.onStart();

        myroot.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                readVariable.clear();
                for (DataSnapshot artisSnapshot : dataSnapshot.getChildren()) {
                    ReadVariables read = artisSnapshot.getValue(ReadVariables.class);
                    readVariable.add(read);

                }
                CustomList adapter = new CustomList(MainActivity.this, readVariable);
                listView.setAdapter(adapter);

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(MainActivity.this,"Check your network",Toast.LENGTH_LONG).show();

            }
        });
    }
    //Ends>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
}

1 Ответ

0 голосов
/ 21 июня 2019
  • Определите readVariable и adapter как глобальные переменные.

    CustomList adapter; ArrayList<> readVariable = new ArrayList<>();

  • Удалить

    readVariable = new ArrayList<>();

    Мы уже определили readVariable как глобальную переменную и инициализировали ее.

  • Удалить строки из onDataChange

    CustomList adapter = new CustomList(MainActivity.this, readVariable);
    listView.setAdapter(adapter);
    
  • и напишите вот так

         //Getting List view.....
         listView = (ListView) findViewById(R.id.MyListView);
         myroot = FirebaseDatabase.getInstance().getReference("all");        
         adapter = new CustomList(MainActivity.this, readVariable);
         listView.setAdapter(adapter);
         //Ends...............
    
  • Теперь, где строка setAdapter была написана ранее в onDataChange, Напишите это:

    listView.notifyDataSetChanged();

...