Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Android [игнор отключен] [закрыт для гостей] / Помогите с LayoutInflater / 6 сообщений из 6, страница 1 из 1
18.10.2014, 10:27
    #38780654
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с LayoutInflater
Нашел на developer.android.com пример создания выезжающего бокового меню, прикрутил к себе, но хоть убейте не могу понять, как при выборе того или иного пункта меню подгружать не просто xml, но и загружать его данными, выдернутыми из удаленной БД :(

То-есть, к примеру, выбираем пункт "Новости", выдергивается R.layout.page_news, в котором ListView нужно заполнить данными.

Цепочка такая (если где-то напутал с понятиями, прошу сильно ногами не пинать, мну еще лютый ламерюга):

Слушатель кликов на боковом меню
Код: java
1.
2.
3.
4.
5.
6.
7.
private class DrawerItemClickListener
            implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
        }
    }



C помощью этой функции получаем нужный View и подставляем его в нужное место
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
private void selectItem(int position) {
        Fragment fragment = new MenuItemFragment();
        Bundle args = new Bundle();
        args.putInt(MenuItemFragment.MENU_ITEM_NUMBER, position);
        fragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
}




Непосредственно сам класс, который формирует View из xml
Код: 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.
    public static class MenuItemFragment
                    extends Fragment {

        public static final String MENU_ITEM_NUMBER = "left_menu_item_number";

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            int i = getArguments().getInt(MENU_ITEM_NUMBER);
            int layout;

            switch (i) {

                case 0:
                    layout = R.layout.page_news;
                    break;

                case 1:
                    layout = R.layout.page_contacts;
                    break;

                case 2:
                    layout = R.layout.page_data;
                    break;

                case 3:
                    layout = R.layout.page_forum;
                    break;

                default:
                    layout = R.layout.page_news;
                    break;
            }

            View rootView = inflater.inflate(layout, container, false);

            getActivity().setTitle(getResources().getStringArray(R.array.left_menu_items_array)[i]);
            return rootView;
        }
    }



Везде, какие примеры находил, присутствует примерно одна и та же конструкция, а как заполнять View данными (для таких, как я) не рассказано ?:) Очень надеюсь на вашу помощь!
Заранее благодарю!
...
Рейтинг: 0 / 0
18.10.2014, 18:26
    #38780759
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с LayoutInflater
так в чем сложноть заполнить listview,

точнее может почитаете как работать со списками ?
...
Рейтинг: 0 / 0
18.10.2014, 19:28
    #38780788
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с LayoutInflater
Просто взять и заполнить никакой сложности нет, сложность заполнить его в данном конкретном случае. Как это сделать, можно небольшой пример ?
...
Рейтинг: 0 / 0
18.10.2014, 20:49
    #38780811
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с LayoutInflater
Домучал класс, который наследует класс Fragment, вроде работает :) Но возник другой вопрос: IDE просит сделать этот класс статическим, хотя и без этого все компилится и запускается. Зачем тогда тут нужен (и нужен ли) static ?

Код: 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.
    public class MenuItemFragment
                    extends Fragment {

        private Context cnt;
        private int layout;

        public MenuItemFragment(Context cnt) {
            this.cnt = cnt;
        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {

            switch (this.layout) {

                case R.layout.page_news:
                    ListView lvMain = (ListView) findViewById(R.id.listNews);
                    String[] names = {"Иван", "Марья", "Петр", "Антон", "Даша", "Борис",
                            "Костя", "Игорь", "Анна", "Денис", "Андрей"};
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                            this.cnt,
                            android.R.layout.simple_list_item_1,
                            names
                    );
                    lvMain.setAdapter(adapter);

                    lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            Log.d("myLog", "itemClick: position = " + position + ", id = " + id);
                        }
                    });

                    lvMain.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                            Log.d("myLog", "itemSelect: position = " + position + ", id = " + id);
                        }

                        public void onNothingSelected(AdapterView<?> parent) {
                            Log.d("myLog", "itemSelect: nothing");
                        }
                    });

                    break;
            }

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            this.layout = getArguments().getInt("layout");
            return inflater.inflate(layout, container, false);
        }
    }
...
Рейтинг: 0 / 0
18.10.2014, 22:08
    #38780825
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с LayoutInflater
а в чем проблема послать запрос, и вернуть требуемый набор данных ?
...
Рейтинг: 0 / 0
18.10.2014, 22:24
    #38780834
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с LayoutInflater
Джибса в чем проблема послать запрос, и вернуть требуемый набор данных ?
Если речь про сформированный в ручную массив с именами, то проблемы никакой нет, просто для примера сделано.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Помогите с LayoutInflater / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]