андроид: ListView или Деятельность не обновляют после ProgressDialog с json Данными

Я ищу в течение дня, чтобы найти мою ошибку. Я не имею никакого успеха. У меня есть деятельность с ListView. ListView обновляют каждые 5 минут с json Данными. Чтобы получить json Данные, я ОБЪЯВЛЯЮ о широте und, долгота к моему Серверу (отфильтруйте его с sql). Я очищаю ListView каждый раз. mylist.clear (); хорошо. Это хорошо работает.

LocationManager всегда Обновляют Местоположение (я согласовываю его с Тостом). Я фильтрую графство для json Данных.

JSONObject json = null;
           json = jsonFunctions.getJSONfromURL("http://myurl.de", mlat, mlon);

Но когда я покинул графство, и я нахожусь в новом графстве, тогда ListView не Обновляет с новыми Данными. Это показывает после каждого upadte старые Данные из старого графства.

Но, у меня есть другая деятельность

        Intent intent = new Intent(StartActivity.this, ReportActivity.class);
        startActivity(intent);
        finish();

в приложении, когда я начинаю его и возвращаюсь к деятельности с ListView, НОВОЕ графство с правильными json Данными доступно...

Я не нашел свою ошибку. Можно ли помочь мне, пожалуйста?

Кодекс:

public class StartActivity extends ListActivity {
    private Timer autoUpdate;
    ArrayList> mylist = new ArrayList>();
    Button btnShowLocation;

   //GPSTracker class
    GpsData gps;    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       //TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listplaceholder);

        btnShowLocation = (Button) findViewById(R.id.report_btn);
        btnShowLocation.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(StartActivity.this, ReportActivity.class);
                startActivity(intent);
                finish();
            }
        });

        //new task().execute();
    }

     @Override
     public void onResume() {
      super.onResume();
      autoUpdate = new Timer();
      autoUpdate.schedule(new TimerTask() {
       @Override
       public void run() {
        runOnUiThread(new Runnable() {
         public void run() {
             //start GPS
             gps = new GpsData(StartActivity.this);
             Toast.makeText(StartActivity.this, "lat: " + gps.getLatitude() + "lon: " + gps.getLongitude(), Toast.LENGTH_SHORT).show();
             //start json download
             new task().execute();
         }
        });
       }
      }, 0, 300000);//updates each 5 min
     }

class task extends AsyncTask
{
private ProgressDialog progressDialog = new ProgressDialog(StartActivity.this);
    InputStream is = null ;
    String result = "";
    protected void onPreExecute() {
       progressDialog.setMessage("Status Update...");
       progressDialog.show();
       progressDialog.setOnCancelListener(new OnCancelListener() {
    @Override
        public void onCancel(DialogInterface arg0) {
        task.this.cancel(true);
       }
    });
     }
       @Override
    protected Void doInBackground(String... params) {
            //get Location Data
               double latitude = gps.getLatitude();
               double longitude = gps.getLongitude();
               String mlat = String.valueOf(latitude);
               String mlon = String.valueOf(longitude);

               //if (gps.latitude != 0.0) {

           JSONObject json = null;
           json = jsonFunctions.getJSONfromURL("http://myurl.de", mlat, mlon);

        if (json != null){

      try{
        JSONArray  earthquakes = json.getJSONArray("bing");
        mylist.clear();
        String myCity = "";
            for(int i=0;i map = new HashMap();    
                JSONObject e = earthquakes.getJSONObject(i);

                //get the wright name for artID
                String myArt = getString(getResources().getIdentifier("list_" + e.getString("artID"), "string", getPackageName()));

                if (!(e.getString("county") == e.getString("city"))){
                    myCity = e.getString("city");
                }

                if (e.getString("city").equals("")){
                    myCity = e.getString("county");
                }

               //Get Time difference
                String clienttime = e.getString("clienttime");
                long mTime = (System.currentTimeMillis() - Long.valueOf(clienttime).longValue())/(60 * 1000);

                map.put("id",  String.valueOf(i));
                map.put("mlat", e.getString("lat"));
                map.put("mlon", e.getString("lon"));
                map.put("first", myArt + ": " + e.getString("road") + ", " + myCity);
                map.put("second", mTime + " min. ago, " + e.getString("suburb"));
                mylist.add(map);
            }       
      }

      catch(JSONException e){
         Log.e("log_tag", "Error parsing data "+e.toString());
      }
      }
        else{
          mylist.clear();
          HashMap map = new HashMap();
            map.put("id",  "1");
            map.put("mlat", "51.6764996");
            map.put("mlon", "7.7664251");
            map.put("first", getString(R.string.no_data1));
            map.put("second", getString(R.string.no_data));
            mylist.add(map);
      }
      //}

            return null;

        }
    protected void onPostExecute(Void v) {
        ListAdapter adapter = new SimpleAdapter(StartActivity.this, mylist , R.layout.main, 
                new String[] { "first", "second" }, 
                new int[] { R.id.item_title, R.id.item_subtitle });

setListAdapter(adapter);

final ListView lv = getListView();
lv.setTextFilterEnabled(true);  
lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
        @SuppressWarnings("unchecked")
        HashMap o = (HashMap) lv.getItemAtPosition(position);                   
        Toast.makeText(StartActivity.this, "Map View is coming soon", Toast.LENGTH_SHORT).show(); 
        //Intent intent = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("geo:" + o.get("mlat") + "," + o.get("mlon") + "?z=20"));
        //startActivity(intent);
    }
});
            this.progressDialog.dismiss();

        } 
    }

@Override
public void onPause() {
 super.onPause();
 autoUpdate.cancel();
 gps.stopUsingGPS();
}

}
0
nl ja de

1 ответы

Не создавайте адаптер, каждый раз в поствыполняет, просто использует adepter.clear, тогда добавляют новые данные после того требования notifyDataSetChanged.

1
добавлено
это - метод класса адаптера.
добавлено автор android2013, источник
Необходимо сказать от адаптера до listview, что данные изменяются поэтому после того, как вы добавили новые данные, заменяющие старое требование, что метод объекта ListAdapter, который должен быть глобальным адаптером, созданным однажды.
добавлено автор android2013, источник
stackoverflow.com/questions/3669325/…
добавлено автор android2013, источник
Когда я добавляю mylist.notifyDataSetChanged (); я получаю ошибку: метод notifyDataSetChanged() не определен для типа ArrayList <�Последовательность, Последовательность>>
добавлено автор sarahsdev, источник
это не работает. действительно возможно, что SimpleAdapter может обновить?
добавлено автор sarahsdev, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)