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

ListView на ViewPager - Android

Восстановить пароль Регистрация
 
Baxter
Сообщений: n/a
13.05.2013, 13:31     ListView на ViewPager #1
Добрый день.

Есть простенький 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
Посмотрите здесь:

ViewPager Android
Android ViewPager
Android Поворот ViewPager
Android ViewPager и ListView
Android ViewPager внутри ListView, Как вставить?
ViewPager Android
GridView и ViewPager Android
Обновление фрагмента с ListView в ViewPager Android
Скроллинг ViewPager-а как у ListView Android
Android Задать позицию ListView в ViewPager
Как победить подтормаживание при листании ViewPager со списками listview? Android
ViewPager setText Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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