25.08.2014 / 23:51 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| andreyKorotayev, У ListView listSelector прозрачный поставь (@android:color/transparent)
__________________
let live |
27.08.2014 / 12:05 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Есть MainActivity, в ней я создаю два fragment, и устанавливаю им свои listener для обработки разных действий. Затем использую эти фрагменты в FragmentPagerAdapter. Все нормально работает, но если теперь перевернуть устройство, то MainActivity пересоздастся, соотв. пересоздадутся фрагменты, адаптер, viewpager, но вот в чем проблема, новые фрагменты адаптер не трогает, а находит старые и сам их пересоздает. Получается мои новые фрагменты нигде не используются, а как получить ссылки на те, что поресоздались сами по себе? Если бы не ViewPager, то можно было бы установить тег при транзакции фрагмента и восстановить в MainActivity через fingFragmentByTag, но адаптер сам управляет фрагментами..
|
27.08.2014 / 12:30 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Naik, как это сам? private Fragment findFragmentByPosition(int position) {
final FragmentPagerAdapter fpa = getFragmentPagerAdapter();
return getSupportFragmentManager()
.findFragmentByTag("android:switcher:" + getViewPager().getId() + ":" + fpa.getItemId(position));
}
__________________
let live |
27.08.2014 / 13:35 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| aNNiMON, это что? Или имеется ввиду, что фрагмент можно получить так findFragmentByTag("android:switcher:" + myViewPager.getId() + ":" + myAdapter.getItemId(position)); ? Тогда это только подтверждает, что адаптер сам все делает, и автор этого кода подглядел где-то в исходниках как устанавливаются теги по умолчанию, только где гарантия, что везде одинаково? Вот такой адаптер Открыть спойлер Закрыть спойлер /**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class
// below).
switch (position) {
case 0:
return stationsFragment;
case 1:
return playFragment;
}
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
case 2:
return getString(R.string.title_section3).toUpperCase(l);
}
return null;
}
}
Изменено Naik (27.08 / 13:47) (всего 6 раз) |
27.08.2014 / 14:25 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Цитата Naik: только где гарантия, что везде одинаково?%android-sdk%\extras\android\support\v4\src\java\android\support\v4\app\FragmentPagerAdapter.java private static String makeFragmentName(int viewId, long id) {
return "android:switcher:" + viewId + ":" + id;
}
__________________
let live Изменено aNNiMON (27.08 / 14:26) (всего 1 раз) |
27.08.2014 / 19:17 | |
andreyKorotayev Пользователь Сейчас: Offline
Имя: Андрей Откуда: Запорожье Регистрация: 19.05.2014
| Народ возникла проблема , создал для программы файл менеджер, на кастомном adapter 'e, все работает, листаю каталог 2-3 раза и потом ListView начинает не реально тормозить? Почему? Изменено andreyKorotayev (27.08 / 19:17) (всего 1 раз) |
27.08.2014 / 19:38 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| andreyKorotayev, скорее всего ресурсы не освобождаешь - утечка памяти в проге. Покажи код адаптера. На pastebin.com или gist.github.com закинь.
__________________
let live Изменено aNNiMON (27.08 / 19:39) (всего 1 раз) |
27.08.2014 / 19:39 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| andreyKorotayev, метод getView должен быть примерно таким public View getView(int position, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null) {
view = li.inflate(R.layout.list_row, null);
holder = new ViewHolder();
holder.imageView = (ImageView) view.findViewById(R.id.list_image);
holder.header = (TextView) view.findViewById(R.id.list_header);
holder.subheader = (TextView) view.findViewById(R.id.list_subheader);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
Item item = list.get(position);
holder.imageView.setImageResource(item.getImageId());
holder.header.setText(item.getHeader());
holder.subheader.setText(item.getSubheader());
return view;
}
private static class ViewHolder {
ImageView imageView;
TextView header, subheader;
}
|
27.08.2014 / 19:40 | |
andreyKorotayev Пользователь Сейчас: Offline
Имя: Андрей Откуда: Запорожье Регистрация: 19.05.2014
| А сюда можно?он 1 кб весит
|
27.08.2014 / 19:42 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| andreyKorotayev, под спойлер давай
Или файлом
Изменено aNNiMON (27.08 / 19:46) (всего 1 раз) |