Swiperefresh ListView, обновления, но не то, как вы ожидаете -- android поле с участием listview поле с участием swiperefreshlayout пол Связанный проблема

Swiperefresh listview, updates but not how you would expect


0
vote

проблема

русский

У меня есть список, который использует функцию SwipeFresh, и я столкнулся с странной проблемой. Когда я проводлю вниз, я вижу анимацию и мою информацию (обновления сцен.) Однако я не могу см. Обновленную информацию, пока я снова не прокрутирую и не вернусь вперед. В тот момент, когда я прокручиваю вверх по вершине, старые данные заменяются новыми данными.

 <код> swipe//        swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);         swipeLayout.setColorSchemeResources(android.R.color.holo_blue_light, android.R.color.holo_green_light);         final TextView rndNum = (TextView) findViewById(R.id.timeStamp);          swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {             @Override             public void onRefresh() {                 Log.i("Refreshing", " onRefresh called from SwipeRefreshLayout");                  initiateRefresh();             }         });  Asynctask//  private void initiateRefresh() {     Log.i("iRefreshing", "initiateRefresh");      /**      * Execute the background task, which uses {@link android.os.AsyncTask} to load the data.      */     new bgRefresh().execute(); }  private class bgRefresh extends AsyncTask<Void, Void, Boolean> {      static final int TASK_DURATION = 3 * 1000; // 3 seconds      @Override     protected Boolean doInBackground(Void... params) {         // Sleep for a small amount of time to simulate a background-task         try {        Thread.sleep(TASK_DURATION);             } catch (InterruptedException e) {                 e.printStackTrace();             }             ArrayList<String> blah = new ArrayList<>();              try {                 // Simulate network access                 Calendar cal = Calendar.getInstance();                 SimpleDateFormat month_date = new SimpleDateFormat("M");                 String monthName = month_date.format(cal.getTime());                 int lastDayOfMonth =(cal.getActualMaximum(Calendar.DAY_OF_MONTH));                 int currentYear = Calendar.getInstance().get(Calendar.YEAR);                 int year = Calendar.getInstance().get(Calendar.YEAR);                ;                 Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);                  cal.set(Calendar.DAY_OF_MONTH,1);                 monthName = month_date.format(cal.getTime());                 //String test = cal.getTime();                 //start_date_monthly_statements=5/1/15&end_date_monthly_statements=5/27/15&activity_detail_type=all&reg_captcha=&display=                 String startDateRecentActivity = monthName + "/1/" + currentYear;                 String enddateRecentyActivity = monthName + "/" + lastDayOfMonth + "/" + currentYear;                 ///second calendar                 Calendar cal2 = Calendar.getInstance();                  cal2 = Calendar.getInstance();                 // cal.add(Calendar.DAY_OF_MONTH, -5); //Go back to the previous month                   webCreate web = new webCreate();                 try {                      //Clear and go.                     Fields.clear();                     Values.clear();                       Fields.add("data1");                     Values.add(datav1");                      cal = Calendar.getInstance();                     month_date = new SimpleDateFormat("MM-dd-yyyy hh:mma");                     String date = month_date.format(cal.getTime());                     date = date.replace("-", "/");                     date = date.replace(" ", " ");                      refreshTS = (TextView) findViewById(R.id.timeStamp);                     refreshTS.setText(date);                      mMainListAdapter = new CustomListViewAdapter(getApplicationContext(), Fields, Values);                     mAdapter.n                  } catch (Exception e) {                     e.printStackTrace();                     return false;                 }                  Thread.sleep(2000);             } catch (InterruptedException e) {                 return false;             }         }          @Override         protected void onPostExecute(Boolean result) {             super.onPostExecute(result);                  mAdapter.notifyDataSetChanged();                 // Tell the Fragment that the refresh has completed                 onRefreshComplete(result);         }      }      private void onRefreshComplete(Boolean result) {         Log.i("LOG_TAG", "onRefreshComplete");          // Remove all items from the ListAdapter, and then replace them with the new items         //mListAdapter.clear();         //for (String cheese : result) {         //    mListAdapter.add(cheese);         //}          // Stop the refreshing indicator         swipeLayout.setRefreshing(false);     }   

Что бы или могло это вызвать?

Английский оригинал

I have a Listview that is using the swipefresh feature, and I've encountered a weird problem. When I swipe down, I see the animation and my information (updates behind the scenes.) However, I can't see the updated information, UNTIL I physically scroll down and back up again. The moment I scroll back up towards the top the old data is replaced with the new data.

swipe//        swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);         swipeLayout.setColorSchemeResources(android.R.color.holo_blue_light, android.R.color.holo_green_light);         final TextView rndNum = (TextView) findViewById(R.id.timeStamp);          swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {             @Override             public void onRefresh() {                 Log.i("Refreshing", " onRefresh called from SwipeRefreshLayout");                  initiateRefresh();             }         });  Asynctask//  private void initiateRefresh() {     Log.i("iRefreshing", "initiateRefresh");      /**      * Execute the background task, which uses {@link android.os.AsyncTask} to load the data.      */     new bgRefresh().execute(); }  private class bgRefresh extends AsyncTask<Void, Void, Boolean> {      static final int TASK_DURATION = 3 * 1000; // 3 seconds      @Override     protected Boolean doInBackground(Void... params) {         // Sleep for a small amount of time to simulate a background-task         try {        Thread.sleep(TASK_DURATION);             } catch (InterruptedException e) {                 e.printStackTrace();             }             ArrayList<String> blah = new ArrayList<>();              try {                 // Simulate network access                 Calendar cal = Calendar.getInstance();                 SimpleDateFormat month_date = new SimpleDateFormat("M");                 String monthName = month_date.format(cal.getTime());                 int lastDayOfMonth =(cal.getActualMaximum(Calendar.DAY_OF_MONTH));                 int currentYear = Calendar.getInstance().get(Calendar.YEAR);                 int year = Calendar.getInstance().get(Calendar.YEAR);                ;                 Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);                  cal.set(Calendar.DAY_OF_MONTH,1);                 monthName = month_date.format(cal.getTime());                 //String test = cal.getTime();                 //start_date_monthly_statements=5/1/15&end_date_monthly_statements=5/27/15&activity_detail_type=all&reg_captcha=&display=                 String startDateRecentActivity = monthName + "/1/" + currentYear;                 String enddateRecentyActivity = monthName + "/" + lastDayOfMonth + "/" + currentYear;                 ///second calendar                 Calendar cal2 = Calendar.getInstance();                  cal2 = Calendar.getInstance();                 // cal.add(Calendar.DAY_OF_MONTH, -5); //Go back to the previous month                   webCreate web = new webCreate();                 try {                      //Clear and go.                     Fields.clear();                     Values.clear();                       Fields.add("data1");                     Values.add(datav1");                      cal = Calendar.getInstance();                     month_date = new SimpleDateFormat("MM-dd-yyyy hh:mma");                     String date = month_date.format(cal.getTime());                     date = date.replace("-", "/");                     date = date.replace(" ", " ");                      refreshTS = (TextView) findViewById(R.id.timeStamp);                     refreshTS.setText(date);                      mMainListAdapter = new CustomListViewAdapter(getApplicationContext(), Fields, Values);                     mAdapter.n                  } catch (Exception e) {                     e.printStackTrace();                     return false;                 }                  Thread.sleep(2000);             } catch (InterruptedException e) {                 return false;             }         }          @Override         protected void onPostExecute(Boolean result) {             super.onPostExecute(result);                  mAdapter.notifyDataSetChanged();                 // Tell the Fragment that the refresh has completed                 onRefreshComplete(result);         }      }      private void onRefreshComplete(Boolean result) {         Log.i("LOG_TAG", "onRefreshComplete");          // Remove all items from the ListAdapter, and then replace them with the new items         //mListAdapter.clear();         //for (String cheese : result) {         //    mListAdapter.add(cheese);         //}          // Stop the refreshing indicator         swipeLayout.setRefreshing(false);     } 

What would or could cause this?

</div
        
         
         

Список ответов

0
 
vote
vote
Лучший ответ
 

Похоже на мой взгляд на код, у вас есть два адаптера? MmainListadapter и Madapter? Поскольку данные появляется только при прокрутите обратно, это означает, что вы не правильно уведомляете адаптер, который вы обновили данные. Позвоните на NotifyDatAsethetCed () на другом адаптере, поскольку mmainlistadapter, кажется, главный адаптер.

 

Looks like from my view of the code you have two adapters? mMainListAdapter and mAdapter? Since the data only appears when you scroll back, this means that you aren't properly notifying the adapter that you have updated the data. Call the notifyDatasetChanged() on the other adapter, since mMainListAdapter appears to be the main adapter.

</div
 
 
 
 
0
 
vote
<Р> Вы должны уведомить адаптер об обновлении с <код> notifyDataSetChanged , или создать новый адаптер. Это по методу <код> SwipeRefreshLayout.setOnRefreshListener . Следуйте этот пример: <Р> https://www.bignerdranch.com/blog/implementing-swipe -в-обновления /

Редактировать

<Р> С последнего обновления можно увидеть, что <код> mMainListAdapter Ваш адаптер. Затем в <код> onPostExecute установите адаптер в ListView.
 <код> myListView.setAdapter(mMainListAdapter);   
<Р> Repleace <код> myListView с ListView
 

You have to notify the adapter about the update with notifyDataSetChanged, or create a new adapter. This is on the method SwipeRefreshLayout.setOnRefreshListener. Follow this example:

https://www.bignerdranch.com/blog/implementing-swipe-to-refresh/

Edit

Since your last update I can see that mMainListAdapter is your adapter. Then in your onPostExecute set the adapter to the ListView.

myListView.setAdapter(mMainListAdapter); 

Repleace myListView with your ListView

</div
 
 

Связанный проблема

0  Android полноэкранный  ( Android fullscreen ) 
Я разрабатываю приложение Android, используя Eclipse. Я заметил одно и то это приложение не показывает на полном экране. Есть пустые черные пространства вокру...

0  Флаттер на родном приложении Android, сзади не работает  ( Flutter in native android app back pressed not working ) 
Я прочитал много тем, но ничего не работает и был действительно же, что мой. Я пытаюсь добавить вспышки трепетания внутри нативного проекта Android, у меня ...

76  Как настроить пункт и элемент текстового цвета внутри навигацииВизнес?  ( How to customize item background and item text color inside navigationview ) 
Я хочу достичь чего-то вроде этого показано в Документы дизайна материалов < / a>. <Код> colorControlHighlight используется для фона на проверенных элемен...

0  Прокрутите вверх относительной макета при прокрутке вверх по просмотру  ( Scroll up relative layout when scrolling up listview ) 
Я создаю приложение. и пользовательская информация отображается в относительной макете. При относительной макете - это список с элементами, создаваемыми польз...

0  Случайные 7-значные номера на andich android  ( Random 7 digit numbers on click android ) 
Я хотел бы, чтобы вы помогли мне в этом коде. Я могу генерировать случайные числа, но не в точном количестве. Вопрос: Как я могу генерировать 7 случайных ци...

1  Установка поля _ID с использованием SQLite & ContentProvider в Android  ( Setting the id field using sqlite contentprovider in android ) 
Я пытаюсь настроить ContentProvider в приложении Android, чтобы держать информацию о домах. Я хотел бы иметь возможность установить поле _id, чтобы быть таким...

0  Как добавить анимацию на фоне в живых обоях в андроид?  ( How to add animation on background in live wallpaper in android ) 
Я хочу добавить прикосновение эффект с анимацией в живых обоях: <код> Bitmap img = BitmapFactory.decodeResource(getResources(),R.drawable.heart); float x = ...

8  Мобильный WebKit Browser (Chrome) адресная строка изменяет $ (окно). Height (); Изготовление фона-размера: прикрытие вскакивание каждый раз  ( Mobile webkit browser chrome address bar changes window height making ba ) 
Проблема в том, что у меня есть несколько девравлических позиций абсолютно, которые имеют фоновый размер: крышка; И их высота рассчитывается JavaScript для за...

1  Можно ли построить ящики Edittext, как ListView?  ( Is it possible to build edittext boxes like a listview ) 
Так что в основном то, что я хотел бы сделать, это уметь создать список редактируемых полей, используя ящики Edittext. Однако вместо того, чтобы войти в мой X...

2  Как получить доступ к поиску детей?  ( How to access searchview children ) 
Я пытаюсь получить доступ <код> EditText поля <код> SearchView (v7) внутри моего приложения, но я всегда заканчиваюсь в исключением NULL указателя. Пока я...

16  Обычная задача Android (эквивалент Cronjob)  ( Android regular task cronjob equivalent ) 
Последний раз, когда этот вопрос был задан (другим пользователем), ответ ответа был: Если это работает в беговой активности, вы можете использовать таймер ...

4  Проблемы о переполнении размера кучи со звуковыми клипами  ( Heap size overflow issues with sound clips ) 
Я создаю приложение для Android, которое включает несколько коротких звуковых зажимов. На данный момент я использую SoundPool для загрузки моих звуковых кли...

0  MediaControllerCompat - Java.lang.illegalargumentException: плохое направление 3  ( Mediacontrollercompat java lang illegalargumentexception bad direction 3 ) 
Я выдаю простую команду mediedcontrollerCompat: Controller.adjustVolume (-1, 0); еще мое приложение FCS с ... <код> java.lang.IllegalArgumentException: ...

-3  Как прекратить воспроизведение сервиса в Android  ( How to stop playing service in android ) 
У меня есть вопрос о сервисе и трансляции в Android.I Создайте страницу будильника, которые используя класс тревоги Reciver (он расширяет класс трансляции) дл...

0  Async HTTP-запрос и Arduino  ( Async http request and arduino ) 
Я разрабатываю приложение для Android, которое будет общаться с Arduino Uno, хотя WiFi. Arduino уже запрограммирован, чтобы включить цифровой порт 12, когда я...

Связанный проблема

0  Android полноэкранный 
0  Флаттер на родном приложении Android, сзади не работает 
76  Как настроить пункт и элемент текстового цвета внутри навигацииВизнес? 
0  Прокрутите вверх относительной макета при прокрутке вверх по просмотру 
0  Случайные 7-значные номера на andich android 
1  Установка поля _ID с использованием SQLite & ContentProvider в Android 
0  Как добавить анимацию на фоне в живых обоях в андроид? 
8  Мобильный WebKit Browser (Chrome) адресная строка изменяет $ (окно). Height (); Изготовление фона-размера: прикрытие вскакивание каждый раз 
1  Можно ли построить ящики Edittext, как ListView? 
2  Как получить доступ к поиску детей? 
16  Обычная задача Android (эквивалент Cronjob) 
4  Проблемы о переполнении размера кучи со звуковыми клипами 
0  MediaControllerCompat - Java.lang.illegalargumentException: плохое направление 3 
-3  Как прекратить воспроизведение сервиса в Android 
0  Async HTTP-запрос и Arduino