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

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

Войти
Регистрация
Восстановить пароль
 
DeadRayder
0 / 0 / 0
Регистрация: 28.11.2014
Сообщений: 25
#1

Перерисовка View в Fragment - Android

19.07.2015, 22:44. Просмотров 394. Ответов 0
Метки нет (Все метки)

Здравствуйте! Помогите разобраться, если я правильно понимаю, то свойство ViewPager-а setOffscreenPageLimit, позволяет указать ему, сколько View хранить в памяти. Я установил значение на 0, таким образом я надеялся получить при переходе между фрагментами каждый раз новую перерисовку View. И вот либо ничего не перерисовывается, либо я неправильно выполняю добавление в ListView. У меня есть переопределенный метод OnCreateView в котором в зависимости от номера страницы, рисуется какое-то View. Так вот я пытался целый день сделать так, чтобы по нажатию на элемент одного ListView, передать его в другой фрагмент и отобразить в другом ListView. Создал адаптер и указал обновление данных:
Java
1
2
mAda = new ArrayAdapterItem(getActivity(),basketCollection);
 mAda.setNotifyOnChange(true);
Для ListView в методе setOnItemLongClickListener указал добавление элемента в этот адаптер

//пока что пытаюсь добавить хоть какой то элемент, но тут должен быть именно тот, который пользователь
//выбрал в ListView
Java
1
mAda.add(new PorductItem("fdsaf", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
А вот так в другом фрагменте пытаюсь отрисовать элемент во View:
Java
1
2
3
4
5
6
7
8
else if(pageNumber == 1)
        {
            view = inflater.inflate(R.layout.fragment_basket,null);
            mAda.add(new PorductItem("1", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
            basketList = (ListView) view.findViewById(R.id.list_view_basket);
            basketList.setAdapter(mAda);
            return  view;
        }
Ничего не выходит, в список выводится только элемент, который я сам добавил при создании 2-го фрагмента, дальше ничего не меняется. Нельзя ли как то намеренно вызывать перерисовку View? Прикреплю на всякий случай полный метод OnCreateView и прошу прощения за кучу лишних строк)
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
92
93
94
95
96
97
98
99
100
101
102
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
 
        View view;
        mAda = new ArrayAdapterItem(getActivity(),basketCollection);
        mAda.setNotifyOnChange(true);
 
        if (pageNumber == 0) {
 
            view = inflater.inflate(R.layout.fragment, null);
 
            ArrayList<Products> prodCollectionForSearch = new ArrayList<>();
 
            //prodCollectionForSearch = Query(SelectCityScreen.mCity);
            ResultSet rs1;
            try {
                Statement statement = MainActivity.connect.createStatement();
                rs1 = statement.executeQuery("select top 10 *\n" +
                        "from EXPORT_TABLE\n" +
                        "where City_name = 'Москва' AND Quantity = 1");
 
                while (rs1.next())
                {
                    prodCollectionForSearch.add(new Products(rs1.getString("Product_name")));
                }
 
                ArrayAdapterProduct prodAdapter = new ArrayAdapterProduct(getActivity().getApplicationContext(),prodCollectionForSearch);
                mAutoCompleteSearchProduct = (AutoCompleteTextView) view.findViewById(R.id.search_product_autoCompl);
                mAutoCompleteSearchProduct.setAdapter(prodAdapter);
 
            } catch (SQLException e) {
                e.printStackTrace();
            }
 
 
            ArrayList<PorductItem> productCollection = new ArrayList<>();
 
            ResultSet rs2;
            try {
                Statement statement = MainActivity.connect.createStatement();
                rs2 = statement.executeQuery("select TOP 50 * \n" +
                        "from EXPORT_TABLE\n" +
                        "where City_name = '"+ SelectCityScreen.mCity +"' AND Quantity = 1");
 
                while (rs2.next())
                {
                    productCollection.add(new PorductItem(rs2.getString("Product_name"),
                            rs2.getString("Price"),
                            rs2.getString("shop_name"),
                            rs2.getString("Barcode_value"),
                            rs2.getString("address")));
                }
 
                final ArrayAdapterItem mAdap = new ArrayAdapterItem(getActivity(),productCollection);
                mList = (ListView) view.findViewById(R.id.liiiiiiiiiiiiiiiist);
                mList.setAdapter(mAdap);
 
 
 
                mList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                    @Override
                    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                       // basketCollection.add((PorductItem) parent.getItemAtPosition(position));
                     //   basketCollection.add(new PorductItem("fdsaf", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
                     //
                        mAda.add(new PorductItem("fdsaf", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
                    //    mAda.notifyDataSetChanged();
                    //    mAda = new ArrayAdapterItem(getActivity(),basketCollection);
                    //    basketList = (ListView) view.findViewById(R.id.list_view_basket);
                    //    mAda.notifyDataSetChanged();
                    //    basketList.setAdapter(mAda);
                        Toast.makeText(getActivity(),"Товар" + position + "был добавлен в корзину", Toast.LENGTH_LONG).show();
                        return false;
 
                    }
                });
 
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return  view;
        }
        else if(pageNumber == 1)
        {
            view = inflater.inflate(R.layout.fragment_basket,null);
         //   mAda.add(new PorductItem("2", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
         //   mAda.add(new PorductItem("3", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
          //  mAda = new ArrayAdapterItem(getActivity(),basketCollection);
 
            mAda.add(new PorductItem("1", "fdaf", "fdasf", "fdasfasd", "fasdfas"));
            basketList = (ListView) view.findViewById(R.id.list_view_basket);
            basketList.setAdapter(mAda);
            return  view;
        }
        else
        {
            view = inflater.inflate(R.layout.fragment_sale,null);
            return  view;
 
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2015, 22:44     Перерисовка View в Fragment
Посмотрите здесь:

Android Работа с Fragment
Android Обновление fragment из другого fragment
Android В чем разница (View view) и (View v)
Android Reload Fragment
Android TextView and Fragment
Вызов Fragment Android
Отличие Fragment от View Android
Fragment Android
Public void onClick(View view) Android
Android Программное добавление View элементов в Fragment
Android ClassNotFoundException. android.view.fragment. как лечить?
Fragment как в нем добавить List View Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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