Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Lina Efer
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 5
#1

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

06.04.2015, 01:40. Просмотров 1425. Ответов 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, но как его правильно запилить?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2015, 01:40
Ответы с готовыми решениями:

Вывод во втором фрагменте длины текста, введённого в первом фрагменте активити
Создать активити с двумя фрагментами. В первый фрагмент должен содержать поле...

отображение Listview
Необходимо вывести строковый массив(listview_names) и осуществить поиск по его...

Отображение записи ListView
Делаю приложение для заметок. Заметки сохраняются в файле. Механизм открытия...

ListView изменить отображение строк
Есть listView в него выводится массив String колличество символов в отлельных...

Неправильное отображение Listview создаваемого с SimpleAdapter
Никак не получается сделать отображение таким как на картинке ...

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

компилятор ошибок не видит, но все вылетает..
0
07.04.2015, 00:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2015, 00:16

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как...

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем...

Фрагмент во фрагменте
Добрый день. А возможно ли создание фрагмента состоящего из нескольких...


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

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

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