Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Baxter
Сообщений: n/a
#1

ListView на ViewPager - Программирование Android

13.05.2013, 13:31. Просмотров 716. Ответов 0
Метки нет (Все метки)

Добрый день.

Есть простенький ViewPager на layout. Там где на layout просто TextView заполняемый из констант все ок. А там где на layout должен быть ListView - пусто. Все делал по примерам из сети.

page_about.xml содержит просто TextView, заполненный из values.
page_reporters.xml содержит ListView "listViewReporters".
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public class MainActivity extends Activity {
  
    private ArrayList <HashMap<String, Object>> myBooks;
    private static final String BOOKKEY = "bookname";
    private static final String PRICEKEY = "bookprice";
    private static final String IMGKEY = "iconfromraw";  //Наша будущая картинка
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myBooks = new ArrayList<HashMap<String,Object>>();
        HashMap<String, Object> hm;
 
        hm = new HashMap<String, Object>();
        hm.put(BOOKKEY, "Коробке");
        hm.put(PRICEKEY, "какой-то текст");
        hm.put(IMGKEY, R.drawable.ic_launcher); //тут мы её добавляем для отображения
     
        myBooks.add(hm);
        
        hm = new HashMap<String, Object>();
        hm.put(BOOKKEY, "Футболке");
        hm.put(PRICEKEY, "какой-то текст");
        hm.put(IMGKEY,  R.drawable.ic_launcher); //тут мы её добавляем для отображения
        
        myBooks.add(hm);
        
        
        LayoutInflater inflater = LayoutInflater.from(this);
        List<View> pages = new ArrayList<View>();
        
        View page = inflater.inflate(R.layout.page_about, null);
        pages.add(page);
        
        page = inflater.inflate(R.layout.page_reporters, null);
        //Список
        setContentView(R.layout.page_reporters);
        ListView ReporterslistView = (ListView) findViewById(R.id.listViewReporters);
        
       SimpleAdapter listadapter = new SimpleAdapter(this, 
                                                 myBooks, 
                                                 R.layout.list, new String[]{
                                                 BOOKKEY,         //верхний текст
                                                 PRICEKEY,        //нижний теккт
                                                 IMGKEY          //наша картинка
                                                 }, new int[]{
                                                 R.id.text1, //ссылка на объект отображающий текст
                                                 R.id.text2, //ссылка на объект отображающий текст
                                                 R.id.img}); //добавили ссылку в чем отображать картинки из list.xml
                
        ReporterslistView.setAdapter(listadapter);
        ReporterslistView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
       
        pages.add(page);
 
       // создаем адаптер
        setContentView(R.layout.activity_main);
        ZAPagerAdapter pagerAdapter = new ZAPagerAdapter(pages);
        // присваиваем адаптер списку
        ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        viewPager.setAdapter(pagerAdapter);
        viewPager.setCurrentItem(2);
        
    }
 
}
Адаптер
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class ZAPagerAdapter extends PagerAdapter{
    
    List<View> pages = null;
    
    public ZAPagerAdapter(List<View> pages){
        this.pages = pages;
    }
    
    @Override
    public Object instantiateItem(View collection, int position){
        View v = pages.get(position);
        ((ViewPager) collection).addView(v, 0);
        return v;
    }
    
    @Override
    public void destroyItem(View collection, int position, Object view){
        ((ViewPager) collection).removeView((View) view);
    }
    
    @Override
    public int getCount(){
        return pages.size();
    }
    
    @Override
    public boolean isViewFromObject(View view, Object object){
        return view.equals(object);
    }
 
    @Override
    public void finishUpdate(View arg0){
    }
 
    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1){
    }
 
    @Override
    public Parcelable saveState(){
        return null;
    }
 
    @Override
    public void startUpdate(View arg0){
    }
    
    @Override
    public CharSequence getPageTitle(int position) {
        switch (position)
        {
            case 0:
            {
                return "О";
            }
            case 1:
            {
                return "Докладчики";
            }
        }
        return null;
    }
}
Если убрать кусок в MainActivity после //создаем адаптер, то корректно отображается просто мой ListView.

Как правильно сделать ViewPager c Listview?

Добавлено через 1 час 51 минуту
Разобрался. Вдруг кому поможет:
Вместо
setContentView(R.layout.page_reporters);
ListView ReporterslistView = (ListView) findViewById(R.id.listViewReporters);

Надо написать
ListView ReporterslistView = (ListView) page.findViewById(R.id.listViewReporters);
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2013, 13:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ListView на ViewPager (Программирование Android):

ViewPager и ListView - Программирование Android
Вообще пытаюсь сделать пролистывающиеся редактируемые списки. Для этого использую ViewPager и ListView. Так как ViewPager использует...

Обновление фрагмента с ListView в ViewPager - Программирование Android
Есть класс фрагмента, который заполняет адаптер: public class PageFragment extends Fragment implements LoaderCallbacks&lt;Cursor&gt; { ...

Задать позицию ListView в ViewPager - Программирование Android
Добрый вечер! Столкнулся с проблемой обновления ListView, после нажатия на кнопку происходит обновление адаптера но элементы ListView...

Скроллинг ViewPager-а как у ListView - Программирование Android
Как сделать скроллинг у ViewPager-а по несколько элементов сразу, в зависимости от скорости жеста, и доводить до просчитанной позиции? ...

ViewPager внутри ListView, Как вставить? - Программирование Android
Здравствуйте. Есть задача, внутри ListView сделать айтемы, которые содержат ViewPager Вот фрагмент кода, в котором я пытаюсь просто...

Ошибка при инициализации ListView в ViewPager - Программирование Android
Всем доброго времени суток. Столкнулся с проблемой, в простом примере создания ViewPager, все работает до тех пор, пока не инициализирую...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 13:31
Привет! Вот еще темы с ответами:

ListView + ViewPager как правильнее организовать экспорт в Excel? - Программирование Android
Здравствуйте! 1.) на каждой странице Pager'а свой список, как подготавливать данные (со всех страниц) для экспорта в Ecxel-файл? ...

Как победить подтормаживание при листании ViewPager со списками listview? - Программирование Android
Как победить подтормаживание при листании ViewPager со списками listview? если быстро листать (ну или даже не очень быстро), то...

ViewPager - Программирование Android
Помогите пожалуйста. Использую эту фичу в своей программе(пример один и его очень много в поисковике). И столкнулся с проблемой. На...

ViewPager - Программирование Android
Всем. Да я недалекий и тупой, уже дня три не могу никак понять :wall: Есть ViewPager &lt;android.support.v4.view.ViewPager ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru