Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 24 апр 2017, 03:30

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 08 окт 2012, 00:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
В этом уроке:

- работаем с ListFragment

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 23 июн 2016, 22:24, всего редактировалось 7 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 окт 2012, 18:29 

Зарегистрирован: 17 окт 2012, 10:30
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А можно сделать так, чтобы по нажатию на пункт списка был переход на другую Activity?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 окт 2012, 15:45 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Ilyatoon писал(а):
А можно сделать так, чтобы по нажатию на пункт списка был переход на другую Activity?

Вешайте стандартный вызов Activity в onListItemClick.
Как вызывать - можно глянуть в Уроке 21

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 окт 2012, 17:59 

Зарегистрирован: 25 окт 2012, 13:58
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте.
Подскажите пожалуйста, как можно вставлять дополнительные данные к элементу такого списка,
например изображения и описание элемента в список?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 29 окт 2012, 17:28 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
ri_sergey писал(а):
Здравствуйте.
Подскажите пожалуйста, как можно вставлять дополнительные данные к элементу такого списка,
например изображения и описание элемента в список?

Это вам нужен Урок 48 и последующие.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 ноя 2012, 10:14 

Зарегистрирован: 25 окт 2012, 13:58
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо, damager82.
А есть ли способ регистрировать контекстное меню для элементов?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 ноя 2012, 15:32 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
ri_sergey писал(а):
Спасибо, damager82.
А есть ли способ регистрировать контекстное меню для элементов?

Урок 51 )

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 ноя 2012, 00:20 

Зарегистрирован: 21 окт 2012, 04:10
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
У почему то ругается на onListItemClick. Главное - никак не могу понять почему.

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.     public void onCreate(Bundle savedInstanceState) {
  2.         super.onCreate(savedInstanceState);
  3.         setContentView(R.layout.main);
  4.         setTitle("New List");
  5.  
  6.                 listView = (ListView)findViewById(android.R.id.list);
  7.                 adapter = new ItemAdapter();
  8.         adapter.addEnginesNames(names);
  9.         adapter.addEnginesDescriptions(descriptions);
  10.         adapter.addEnginesLogoUrl(logoUrl);
  11.                 listView.setAdapter(adapter);
  12.                
  13.         MyTask mt = new MyTask();
  14.         mt.execute();
  15.        
  16.                 listView.setOnScrollListener(new OnScrollListener() {
  17.                
  18.                 @Override
  19.                 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  20.                        
  21.                         ...
  22.                         ...
  23.                         ...
  24.                
  25.                         @Override
  26.                         public void onScrollStateChanged(AbsListView view, int scrollState) {}
  27.                
  28.             });
  29.  
  30.             public void onListItemClick(ListView l; View v; int position; long id) {
  31.                 String item = (String) getListAdapter().getItem(position);
  32.                 Toast.makeText(this, "olololo" + item, Toast.LENGTH_LONG).show();
  33.             }
  34.                
  35.     }


Подчеркивает onListItemClick и пишет: "void is an invalid type for the variable onListItemClick"
Кроме того, подчеркивает последнюю скобку и пишет:
"Syntax error on token ")", ; expected"
"Syntax error on token ")", ; expected"

Как с этим бороться?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 ноя 2012, 14:51 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Stas0n писал(а):
Подчеркивает onListItemClick и пишет: "void is an invalid type for the variable onListItemClick"
Кроме того, подчеркивает последнюю скобку и пишет:
"Syntax error on token ")", ; expected"
"Syntax error on token ")", ; expected"


При перечислении параметров метода используйте запятую, а не точку с запятой
И где-то со скобками напутано, проверьте все.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Урок 109 - нужны советы
СообщениеДобавлено: 06 дек 2012, 14:02 

Зарегистрирован: 06 дек 2012, 13:24
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Уважаемый автор и уважаемые профи, нуждаюсь в совете по данному уроку.
Уже долго бьюсь над уроком, но успешно запускается он только при 2 условиях.
Условие 1: отключена поддержка версий андроида ниже 3;
Условие 2: массив строк выполнен как и у автора в коде, а не в ".xml" файле.
Вот рабочий код фрагмента (ListFrag.java):
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. package ry.mylistfr.mylistfragment;
  2.  
  3.  
  4. import android.os.Bundle;
  5. import android.app.ListFragment;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.ArrayAdapter;
  10.  
  11. public class ListFrag extends ListFragment
  12. {
  13.         String data[] = new String[] { "one", "two", "three", "four" };
  14.         //String data []= getResources().getStringArray(R.strings.steps);
  15.        
  16.           @Override
  17.           public void onActivityCreated(Bundle savedInstanceState) {
  18.             super.onActivityCreated(savedInstanceState);
  19.             ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
  20.                 android.R.layout.simple_list_item_1, data);
  21.             setListAdapter(adapter);
  22.           }
  23.          
  24.           @Override
  25.           public View onCreateView(LayoutInflater inflater, ViewGroup container,
  26.               Bundle savedInstanceState) {
  27.             return inflater.inflate(R.layout.fr, null);
  28.           }
  29. }
  30.  
  31.  

Вот "strings.xml"
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.  
  4.     <string name="app_name">MyListFragment</string>
  5.     <string name="hello_world">Hello world!</string>
  6.     <string name="menu_settings">Settings</string>
  7. <string name="number_list">Список чисел</string>
  8. <string name="empty">Нет данных</string>
  9.    
  10.     <string-array name="steps">
  11.         <item>Step_one</item>
  12.         <item>Step_two</item>
  13.         <item>Step_3</item>
  14.         <item>Step_4</item>
  15.         <item>Step_5</item>
  16.         <item>Один</item>
  17.         <item>Два</item>
  18.         <item>Три</item>
  19.     </string-array>
  20.  
  21. </resources>
  22.  

Разметка главного активити (mainlayout.xml):
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3.    xmlns:android="http://schemas.android.com/apk/res/android"
  4.    android:id="@+id/LinLayout"
  5.    android:layout_width="match_parent"
  6.    android:layout_height="match_parent"
  7.    android:orientation="vertical">
  8.     <fragment
  9.        android:name="ry.mylistfr.mylistfragment.ListFrag"
  10.        android:layout_width="match_parent"
  11.        android:layout_height="match_parent">    
  12.     </fragment>
  13. </LinearLayout>
  14.  

Манифест приложения:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.    package="ry.mylistfr.mylistfragment"
  4.    android:versionCode="1"
  5.    android:versionName="1.0" >
  6.  
  7.     <uses-sdk
  8.        android:minSdkVersion="11"
  9.        android:targetSdkVersion="16" />
  10.  
  11.     <application
  12.        android:allowBackup="true"
  13.        android:icon="@drawable/ic_launcher"
  14.        android:label="@string/app_name"
  15.        android:theme="@style/AppTheme" >
  16.         <activity
  17.            android:name="ry.mylistfr.mylistfragment.MainlayoutActivity"
  18.            android:label="@string/app_name" >
  19.             <intent-filter>
  20.                 <action android:name="android.intent.action.MAIN" />
  21.  
  22.                 <category android:name="android.intent.category.LAUNCHER" />
  23.             </intent-filter>
  24.         </activity>
  25.                 <activity
  26.            android:name="ry.mylistfr.mylistfragment.ListFrag">
  27.            
  28.         </activity>
  29.     </application>
  30.  
  31. </manifest>
  32.  

Все это работает, если убираем из манифеста поддержку Android ниже 3 (API 11) и если массив задан напрямую в коде.
Если раскомментить в коде фрагмента строку: String data []= getResources().getStringArray(R.strings.steps);
(естественно заккоментив строку String data[] = new String[] { "one", "two", "three", "four" };), то Eclipse выдает ошибку: "strings cannot be resolved or is not a field".
Вопрос - как бороться с проблемой, т.е. как сделать чтобы приложение приняло стринговый массив из ".xml" файла, и как сделать так, чтобы старые версии Android понимали данный код?
З.Ы. Пробовал в коде фрагмента вставлять вместо "import android.app.ListFragment;" "import android.support.v4.app.ListFragment;" - безрезультатно.
К сожалению, не нашел как можно вставлять в сообщение скриншоты (или вообще картинки, при нажатии на кнопку форума "Img" запрос на вставку картинки не отображается). Такая функция есть?
К 109 уроку можно добавить одно предложение с напоминанием занести в манифест активность класса MainList.java


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 14:45 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 22:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
А вы когда в коде писали "import android.support.v4.app.ListFragment;", соответствующую библиотеку подключали?
По оводу XML. Я бы посоветовал перенести создание массива в onActivityCreated.
И еще. Почему "String data[]", а не "String[] data"? Или я чего то не понимаю?

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 15:01 

Зарегистрирован: 06 дек 2012, 13:24
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
KamiSempai писал(а):
А вы когда в коде писали "import android.support.v4.app.ListFragment;", соответствующую библиотеку подключали?
По оводу XML. Я бы посоветовал перенести создание массива в onActivityCreated.
И еще. Почему "String data[]", а не "String[] data"? Или я чего то не понимаю?

Да, библиотека подключена. Eclipse в новой версии ее автоматом цепляет.
String data[] - это как в уроке у автора, и судя по справочнику Java (Вильямс - полный справочник по java) массивы задают так.
Проверил этот факт 10 раз, потому как, к сожалению, в java разбираюсь плохо - от этого и страдаю :)
Попробовал перенести создание массива в onActivityCreated - ничего не изменилось, ошибка та же.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 15:05 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Цитата:
Почему "String data[]", а не "String[] data"? Или я чего то не понимаю?

если не ошибаюсь яве всё равно как писать...

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 15:46 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 22:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
blackdiamond писал(а):
Попробовал перенести создание массива в onActivityCreated - ничего не изменилось, ошибка та же.
Даже так не работает?
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
  2. android.R.layout.simple_list_item_1, getResources().getStringArray(R.strings.steps));

С фрагментами может еще быть проблема в обработке XML.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 16:29 

Зарегистрирован: 06 дек 2012, 13:24
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
KamiSempai писал(а):
Даже так не работает?
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, getResources().getStringArray(R.strings.steps));

С фрагментами может еще быть проблема в обработке XML.

Решил проблему с отображением данных из ".xml"
Способ, предложенный выше
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, getResources().getStringArray(R.strings.steps));
, я попробовал с самого начала, ничего не вышло. и я вынес объявление массива за метод
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onActivityCreated
.
Потом подставил вместо getResources().getStringArray(R.strings.steps) следующий код getResources().getStringArray(R.array.steps) - опять не вышло.
А вот когда совместил оба способа - тогда и вышло, т.е.:
1. Пишем
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
  2.                 android.R.layout.simple_list_item_activated_1, getResources().getStringArray(R.array.steps));
  3.             setListAdapter(adapter);
  4.  

2. Вносим его в метод
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onActivityCreated
.
Итого рабочий код:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. package ry.mylistfr.mylistfragment;
  2.  
  3.  
  4. import android.app.ListFragment;
  5. import android.os.Bundle;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.ArrayAdapter;
  10. import android.widget.ListView;
  11. import android.widget.Toast;
  12.  
  13. public class ListFrag extends ListFragment
  14. {
  15.         //String data[] = new String[] { "one", "two", "three", "four" };
  16.         //String data []= getResources().getStringArray(R.array.steps);
  17.        
  18.           @Override
  19.           public void onActivityCreated(Bundle savedInstanceState) {
  20.             super.onActivityCreated(savedInstanceState);
  21.            
  22.             ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
  23.                 android.R.layout.simple_list_item_activated_1, getResources().getStringArray(R.array.steps));
  24.             setListAdapter(adapter);
  25.           }
  26.          
  27.           @Override
  28.           public View onCreateView(LayoutInflater inflater, ViewGroup container,
  29.               Bundle savedInstanceState) {
  30.             return inflater.inflate(R.layout.fr, null);
  31.           }
  32.          
  33.           public void onListItemClick(ListView l, View v, int position, long id) {
  34.                     super.onListItemClick(l, v, position, id);
  35.                     Toast.makeText(getActivity(), "position = " + position, Toast.LENGTH_SHORT).show();
  36.                   }
  37.          
  38.          
  39. }
  40.  

Осталось решить второй важный вопрос - как добиться того, чтобы код запускался под API 8
З.Ы. Люди добрые, подскажите дураку, почему код не работал, если массив объявляли до метода???
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onActivityCreated

В тоже самое время, если объявить массив программно ДО метода, то прога работает.
Почему такая "нелюбовь" к массивам в ".xml"? :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 17:07 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 22:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
blackdiamond писал(а):
З.Ы. Люди добрые, подскажите дураку, почему код не работал, если массив объявляли до метода???
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onActivityCreated

В тоже самое время, если объявить массив программно ДО метода, то прога работает.
Почему такая "нелюбовь" к массивам в ".xml"? :)
Дело в том, что все объекты, создаваемые вне методов, создаются еще до вызова конструктора самого объекта(но после вызова конструктора суперкласса). Скорее всего на тот момент объект был не окончательно подготовлен для работы с ним и getResources() работал не совсем так как надо.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 17:48 

Зарегистрирован: 06 дек 2012, 13:24
Сообщений: 12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
KamiSempai писал(а):
Дело в том, что все объекты, создаваемые вне методов, создаются еще до вызова конструктора самого объекта(но после вызова конструктора суперкласса). Скорее всего на тот момент объект был не окончательно подготовлен для работы с ним и getResources() работал не совсем так как надо.

Благодарю за ответ!
Пытаюсь совместить два урока:
"Урок 107. Android 3. ActionBar. Размещение элементов" и данный, 109 урок "Урок 109. Android 3. Fragments. ListFragment - список".
Опять не все так радужно. Элементы ActionBar появились и всё прекрасно, а с ListFragment опять засада.
Делаю все как описал выше, но вместо списка выводится фраза: "нет данных".
Т.е. как-будто адаптер не грузит данные (как на первом скриншоте у автора в 109 уроке). Программа компилится без ошибок, все Ок, а данные в список не грузятся.
Но, пожалуй, не буду загромождать форум своими проблемами, итак много вопросов назадавал, буду разбираться сам.
З.Ы. Спасибо автору за полезные и бесплатные уроки!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 дек 2012, 13:51 

Зарегистрирован: 17 дек 2012, 13:47
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ругается на:
getActivity()
Сообщение:
Method is undefined for the type (имя активити)
У меня FragmentActivity - может быть из-за этого?

Еще вопрос к админу:
У меня есть 2 вью, и к нему было 2 активити, я их переключал кнопками
мне надо было сделать что бы я мог эти 2 вью переключать свайпами, и я сделал по примеру гугловскому, где юзаются фрагменты -
активити стали фрагментами, но весь код из них пришлось перенести в главную активити управляющую ими, будет ли так работать? (п.с. сейчас попробывал не работает но вообще это возможно?)

Еще вопрос можно ли фрагмент внутри фрагмента ставить? (к примеру внутри вью вставить лист фрагмент с лист вью)

Еще вопрос предложение о: сделайте хорошие примеры где из 1го класса вызываются функции работающие с вью из другого класса.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 дек 2012, 11:21 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
test1 писал(а):
Ругается на:
getActivity()
Сообщение:
Method is undefined for the type (имя активити)
У меня FragmentActivity - может быть из-за этого?

getActivity() - это метод фрагмента. Вы в фрагменте его вызываете?

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 дек 2012, 11:25 

Зарегистрирован: 17 дек 2012, 13:47
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
damager82 писал(а):
test1 писал(а):
Ругается на:
getActivity()
Сообщение:
Method is undefined for the type (имя активити)
У меня FragmentActivity - может быть из-за этого?

getActivity() - это метод фрагмента. Вы в фрагменте его вызываете?

В том то и дело, у меня есть фрагмент активити, есть 2 фрагмента, и код который должен быть в 1 файле(фрагмент активити) вот в нем он и не пашет с этой строкой.
Если я разбиваю код на 2 части(2фрагмента) то потом проблема с их одновременной активацией при запуске фрагмент активити, точнее у меня есть подключение которое необходимо в обеих фрагментах, а я хз как его и там и там использовать кроме как в 1 фрагмент активити вписать, или можно фрагменты как активити обычные использовать? задавая методы он креейт и импортируя друг в друга.

Спасибо за ответы.


Последний раз редактировалось test1 18 дек 2012, 11:55, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB