Размах / (Fling) с динамическими представлениями - PullRequest
0 голосов
/ 16 апреля 2011

Что я хочу:

Я хочу добавить в мое приложение свайп или, как я узнал, его имя на android fling. У меня есть динамическое число просмотров, число - это количество дат из файла ICS, которые я анализирую, я хочу, чтобы все эти представления были объединены. Но если бы у меня было, скажем, 12 из них, каждый из которых имел бы ListView с 8 элементами (макс.), Я бы использовал много памяти. Поэтому мне бы хотелось, чтобы только 2 до текущего выбранного вида и 2 после были инициализированы.

Что я пробовал:

В моем поиске я наткнулся на этот вопрос о потоке стека , в котором упоминается HorizontalPager. Но я не знаю, как заставить его работать с несколькими ListView и загружать их динамически.

Я попробовал ViewGroup, а затем добавил и удалил ListView, но он не работает, он отображает ViewGroup, но не ListView

public class HourView extends ViewGroup
{
    private ListView listView;

    /**
     * @param context
     */
    public HourView(Context context)
    {
        super(context);
        init(false);
    }

    /**
     * 
     * @param context
     * @param day the current day
     */
    public HourView(Context context, String day,
            boolean shouldBeVisible)
    {
        super(context);
        this.day = day;

        init(shouldBeVisible);
    }

        private void init(boolean shouldBeVisible)
    {       
               if (shouldBeVisible)
        {   
            listView = new ListView(getContext());

            if (day == null)
            {
                day = Event.dtFormatDay.format(new Date());
            }

                        new GetEvents(day).execute();
                       addView(listView);
                  }
                  else
                  {
                        removeAllViews();
                        listView = null;                  
                  }
    }
}

GetEvents () является AsyncTask (класс внутри класса viewgroup), который получает некоторые события из локальной базы данных, код onPostExecute выглядит следующим образом

protected void onPostExecute(String errMsg)
{
  if (errMsg != null)
  {
     listView.setAdapter(new SkemaHoursRowAdapter(getContext(), eventItems));
      listView.requestLayout();
      addView(listView, layoutParams);
  }
}

eventItems - это массив, который я анализирую для моего пользовательского rowadapter (который, я знаю, работает). Группа представлений отображается, а listView - нет.

Есть предложения ??

1 Ответ

0 голосов
/ 19 апреля 2011

Я закончил тем, что не использовал viewgroup, вместо этого я создал loader-listadapter, который я отображаю, если правильный список еще не обновлен.

Таким образом, вместо расширения ViewGroup он расширяет ListView, и его адаптер сначала настраивается на загрузочный адаптер, а при загрузке устанавливает правильный просмотр списка.

...