Я пытаюсь реализовать какой-то календарь с некоторыми расписаниями.ViewPager внутри каждой ячейки gridView
Я создал GridView, так как может быть несколько раз за тот же день, который я помещал в каждую ячейку ViewPager. Я создал все адаптеры, но есть странная проблема: содержимое пейджера видно только в первой ячейке gridview.
Если я поставил простой элемент TextView внутри ячейки, поэтому все содержимое отображается правильно в 1-й, 3-й и 5-й ячейках.
Вот мои файлы:
grid_row.xml: расположение одной GridView ячейки:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@drawable/square"
android:orientation="vertical" >
<TextView
android:id="@+id/row_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-bold"
android:textColor="#cfd8dc"
android:textSize="9sp" />
<android.support.v4.view.ViewPager
android:id="@+id/row_orari_pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
WhereFragment.java
[...]
public class GridViewCustomAdapter extends BaseAdapter {
ArrayList<Day> officeDay;
public GridViewCustomAdapter(Day[] days) {
officeDay = new ArrayList<Day>(Arrays.asList(days));
}
public int getCount() {
return 7;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = getActivity().getLayoutInflater();
row = inflater.inflate(R.layout.grid_row, parent, false);
TextView day = (TextView) row.findViewById(R.id.row_day);
ViewPager mPager = (ViewPager) row.findViewById(R.id.row_orari_pager);
day.setText(days[position]);
OrariPagerAdapter mPagerAdapter = new OrariPagerAdapter(getChildFragmentManager());
mPager.setAdapter(mPagerAdapter);
}
return row;
}
public class OrariPagerAdapter extends FragmentStatePagerAdapter {
public ArrayList<Time> currentOrari;
public OrariPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public OrariObjectFragment getItem(int i) {
OrariObjectFragment fragment = new OrariObjectFragment(currentOrari);
Bundle args = new Bundle();
args.putInt(OrariObjectFragment.ARG_OBJECT, i);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
return "";
}
}
@SuppressLint("ValidFragment")
public class OrariObjectFragment extends Fragment {
public static final String ARG_OBJECT = "object";
public ArrayList<Time> orari;
public OrariObjectFragment(ArrayList<Time> currentOrari) {
orari = currentOrari;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.orari_layout, container, false);
final int position = getArguments().getInt(ARG_OBJECT);
TextView orario = (TextView) rootView.findViewById(R.id.row_orario);
orario.setTextColor(Color.parseColor("#ff0000"));
return rootView;
}
}
}
orari_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/row_orario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:textColor="#607d8b"
android:textSize="15sp"
android:text="aoisjsdasdas"/>
</LinearLayout>
Это результат, поэтому заполняется только первая ячейка, а не две другие.
Любые советы? Спасибо всем
Woo ... Секундочку. Правильно ли я это читаю? У вас есть адаптер для GridView, который внедряет в каждый вызов 'getView' FragmentStatePagerAdapter? Это ваша проблема. Вам нужно подойти к проблеме с совершенно другого ракурса. Кажется, каждая ячейка представляет месяц? Что именно вы пытаетесь отобразить в них? –
Каждая ячейка представляет собой день, и каждая страница viewpager представляет время открытия. Я решил использовать параметр PageAdapter вместо FragmentStatePagerAdapter. – roccocullo