powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Помогите с LayoutInflater
6 сообщений из 6, страница 1 из 1
Помогите с LayoutInflater
    #38780654
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел на 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
Помогите с LayoutInflater
    #38780759
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так в чем сложноть заполнить listview,

точнее может почитаете как работать со списками ?
...
Рейтинг: 0 / 0
Помогите с LayoutInflater
    #38780788
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто взять и заполнить никакой сложности нет, сложность заполнить его в данном конкретном случае. Как это сделать, можно небольшой пример ?
...
Рейтинг: 0 / 0
Помогите с LayoutInflater
    #38780811
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Домучал класс, который наследует класс 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
Помогите с LayoutInflater
    #38780825
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в чем проблема послать запрос, и вернуть требуемый набор данных ?
...
Рейтинг: 0 / 0
Помогите с LayoutInflater
    #38780834
korshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибса в чем проблема послать запрос, и вернуть требуемый набор данных ?
Если речь про сформированный в ручную массив с именами, то проблемы никакой нет, просто для примера сделано.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Помогите с LayoutInflater
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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