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

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

Войти
Регистрация
Восстановить пароль
 
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
#1

Отображение ListView во фрагменте - Android

06.04.2015, 01:40. Просмотров 1026. Ответов 5
Метки нет (Все метки)

Привет, всем!
Буду очень признательна, если кто-нибудь сможет мне помочь разобраться.
Я пишу программку для расписания занятий моего универа, параллельно учусь писать под андроид. Сейчас столкнулась с одним вопросом: как отобразить список во вкладках фрагмента? (пока тестирую на простом массиве значений, точнее собираю код по кусочкам из того, что нахожу).


Вот код фрагмента:

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.example.linaefer.ttsuai;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.RelativeLayout;
import android.app.Activity;
import android.view.ViewGroup.LayoutParams;
 
 
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
 
public class SecondFragment extends SherlockFragment {
 
    private ActionBar     actionBar;
    private ViewPager     pager;
    private ActionBar.Tab tab;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
 
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 
        View view = inflater.inflate(R.layout.fragment_second, container, false);
 
        actionBar = getSherlockActivity().getSupportActionBar();
        actionBar.removeAllTabs();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setTitle(getString(R.string.second_fragment_name));
        ViewPager.SimpleOnPageChangeListener ViewPagerListener = new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                actionBar.setSelectedNavigationItem(position);
            }
        };
 
        pager = (ViewPager) view.findViewById(R.id.pager_color);
        pager.setOnPageChangeListener(ViewPagerListener);
 
 
        FragmentManager fm = getChildFragmentManager();
 
        ActionBar.TabListener tabListener = new ActionBar.TabListener() {
 
            @Override
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                pager.setCurrentItem(tab.getPosition());
 
                SherlockFragmentActivity sherlockFragmentActivity = getSherlockActivity();
                if (sherlockFragmentActivity != null) {
                    SlidingMenu slidingMenu = ((MainActivity) sherlockFragmentActivity).getMenu();
                    if (tab.getPosition() == 0) {
                        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
                    } else {
                      slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
                    }
                }
            }
 
            @Override
            public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
 
            }
 
            @Override
            public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { }
        };
 
        tab = actionBar.newTab().setText("ГРУППА").setTabListener(tabListener);
        actionBar.addTab(tab);
 
        tab = actionBar.newTab().setText("ПРЕПОДАВАТЕЛЬ").setTabListener(tabListener);
        actionBar.addTab(tab);
 
 
        return view;
    }
}
А вот этот код был адаптировать для mainactivity

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
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
 
public class MainActivity extends Activity {
    private final String[] values = { "Test 1", "Test 2", "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8",
            "Test 1", "Test 2", "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8", "Test 1", "Test 2",
            "Test 3", "Test 4", "Test 5", "Test 6", "Test 7", "Test 8", "Test 1", "Test 2", "Test 3", "Test 4",
            "Test 5", "Test 6", "Test 7", "Test 8" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
 
        ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, values);
        listView.setAdapter(adapter);
        setContentView(listView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
 
}
я нашла то, что для фрагмента используется метод onCreateView, но как его правильно запилить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2015, 01:40     Отображение ListView во фрагменте
Посмотрите здесь:

Неправильное отображение Listview создаваемого с SimpleAdapter Android
Потоки в фрагменте не запустить? Android
отображение Listview Android
Android ListView. После добавления кнопки перестал быть доступен сам ListView
Android MenuItemSelected не работает в фрагменте
Изменить из активити данные в фрагменте Android
Android Остановить выполнение во фрагменте
Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити Android
Android Webview на фрагменте
Данные из SQlite в ListView, обработка события ListView Android
Обработать событие onBackPressed во фрагменте Android
ListView изменить отображение строк Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
06.04.2015, 10:13     Отображение ListView во фрагменте #2
Lina Efer, Вы хотите, чтобы ListView вызывался как фрагмент, а не элемент в активити, так?
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
06.04.2015, 10:32  [ТС]     Отображение ListView во фрагменте #3
Да, если я правильно поняла схему работы. Дело в том, что в активити есть два фрагмента(вкладки), в каждом из которых дб свой список. Я потом буду подключать БД.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
06.04.2015, 10:40     Отображение ListView во фрагменте #4
Lina Efer, А попробуйте сначала просто вывести в MainActivity один фрагмент, в котором содержится ListView, запонляемый массивом данных. Может так, начиная с малого,вы сможете лучше понять схему работы фрагментов.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
06.04.2015, 12:38     Отображение ListView во фрагменте #5
У вас все наоборот, ActionBar, ViewPager должны быть в MainActivity.
Там же задаваться FragmentManager.
А в SecondFragment уже заполнять фрагменты.
Вот поизучайте
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
07.04.2015, 00:16  [ТС]     Отображение ListView во фрагменте #6
Спасибо, но мне это не нужно в MainActivity.
Разобралась немного в необходимой структуре.
Теперь есть конкретный вопрос - как в switch case вывести два разных listview?

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
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
 
public class ViewPagerListAdapter extends FragmentPagerAdapter {
 
    final int PAGE_COUNT = 2;
 
    public ViewPagerListAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }
 
    @Override
    public Fragment getItem(int arg0) {
        Fragment fragment = null;
 
        switch (arg0) {
            case 0:
                fragment = new FragmentListGroups(); 
                break;
            case 1:
                fragment = new FragmentListTeachers();
                break;
        }
 
        return fragment;
    }
 
    @Override
    public int getCount() {
        return PAGE_COUNT;
    }
}

в каждом кейсе должен быть свой список.
(они определены в файлах FragmentListGroups.java/FragmentListTeachers.java)


Java
1
2
3
4
5
6
7
8
9
10
  
public class FragmentListGroups extends SherlockFragment {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View View = inflater.inflate(R.layout.list_groups, container, false);
        ListView list = (ListView) View.findViewById(R.id.list_groups);
        return View;
    }
}

компилятор ошибок не видит, но все вылетает..
Yandex
Объявления
07.04.2015, 00:16     Отображение ListView во фрагменте
Ответ Создать тему
Опции темы

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