powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Обьясниье по коду
3 сообщений из 3, страница 1 из 1
Обьясниье по коду
    #38284956
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть класс с примером:

Код: 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.
public class ArrayAdapterObjectFragment 
    extends ListFragment
{
    private static final List<Item> items = 
        new ArrayList<Item>();
 
    private static class Item
    {
        public final String line1;
        public final String line2;
         
        public Item(String line1, String line2)
        {
            this.line1 = line1;
            this.line2 = line2;
        }
    }
         
    private class ItemAdapter extends ArrayAdapter<Item>
    {
 
        public ItemAdapter(Context context)
        {
            super(context, 
                android.R.layout.simple_list_item_2, 
                items);
        }
         
        @Override
        public View getView(int position, 
            View convertView, 
            ViewGroup parent)
        {
            /* This implementation is very 
             * inefficient and should not be used
             * as is.
             */
            Item item = getItem(position);
            View view = LayoutInflater.from(
                getContext()).inflate(
                    android.R.layout.simple_list_item_2, 
                    parent, false);
            ((TextView)view.findViewById(android.R.id.text1))
                .setText(item.line1);
            ((TextView)view.findViewById(android.R.id.text2))
                .setText(item.line2);
            return view;
        }
    }
     
    static
    {
        items.add(new Item("Title One", "Subtitle One"));
        items.add(new Item("Title Two", "Subtitle Two"));
        items.add(new Item("Title Three", "Subtitle Three"));
        items.add(new Item("Title Four", "Subtitle Four"));
        items.add(new Item("Title Five", "Subtitle Five"));
    }
     
    @Override
    public View onCreateView(LayoutInflater inflater, 
        ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.listview, 
            container, false);
    }
     
    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);
        ListAdapter adapter = new ItemAdapter(getActivity());
        setListAdapter(adapter);
    }



пример отсюда http://blog.stylingandroid.com/archives/1710


вопрос: не понимаю, зачем объявлять private static class Item, а затем создавать экземпляр класса через конструктор
items.add( new Item ("Title One", "Subtitle One")); ?

вопрос 2: что за форма записи? просто static написано...
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    static
    {
        items.addnew Item("Title One", "Subtitle One"));
        items.add(new Item("Title Two", "Subtitle Two"));
        items.add(new Item("Title Three", "Subtitle Three"));
        items.add(new Item("Title Four", "Subtitle Four"));
        items.add(new Item("Title Five", "Subtitle Five"));
    }
...
Рейтинг: 0 / 0
Обьясниье по коду
    #38284986
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladislavVVвопрос: не понимаю, зачем объявлять private static class Item

если вложеный класс не объявить static, то его можно использовать только в контексте экземпляра внешнего класса.
То есть будет примерно так

Код: java
1.
2.
3.
4.
new ArrayAdapterObjectFragment.Item();//Ошибка

fragment = new ArrayAdapterObjectFragment();
new fragment.Item();//Нет ошибки


Официальный туториал:
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

VladislavVV, а затем создавать экземпляр класса через конструктор
items.add( new Item ("Title One", "Subtitle One")); ?

Ну, типа экземпляры класса создаются через констрктор? Основы ООП. Что именно в этом не понятного?

VladislavVVвопрос 2: что за форма записи? просто static написано...
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    static
    {
        items.addnew Item("Title One", "Subtitle One"));
        items.add(new Item("Title Two", "Subtitle Two"));
        items.add(new Item("Title Three", "Subtitle Three"));
        items.add(new Item("Title Four", "Subtitle Four"));
        items.add(new Item("Title Five", "Subtitle Five"));
    }


Это static initializer\статический конструктор. Он выполняется после загрузки класса, но перед его использованием.
В тот же момент, когда инициализируются статические поля.
То есть
Код: java
1.
private static Type member = new Type();


аналогично
Код: java
1.
2.
3.
4.
private static Type member;
static{
    member = new Type();
}


http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html
Возможны аналогичные не статические блоки.
...
Рейтинг: 0 / 0
Обьясниье по коду
    #38285723
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно топик-стартеру имеет смысл почитать как работают и для чего нужны design pattern. Посомотрите фактори метод и билдер как они работают и в каких ситуациях используются.

http://javarevisited.blogspot.com/2012/06/builder-design-pattern-in-java-example.html

здесь про билдер хорошо написано - доступным английским языком с примерчиком как Вы любите.

Вопросы правильные лучше их задавать чем тупо не понимать.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Обьясниье по коду
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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