我有一个ViewPager
和12 fragments
。我需要从api获取数据并在滚动时更新片段。如何更新片段的内容,仅一个片段更新12页?
我的片段布局fragment_item
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/surface">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:layout_marginStart="20dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/khaire"
android:gravity="center"
android:text="Overal Working Hour"
android:textColor="@color/colorPrimary"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="center"
android:padding="15dp"
android:text="January"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold" />
我的主要活动代码
public class MainActivity extends AppCompatActivity {
private static final int num_pages = 12;
private ViewPager mPager;
private PagerAdapter mPagerAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPager = findViewById(R.id.pager);
mPagerAdapter = new ScreenAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
private class ScreenAdapter extends FragmentStatePagerAdapter {
public ScreenAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return new SliderFragment();
}
@Override
public int getCount() {
return num_pages;
}
}
我的SlideFragment类
public class SliderFragment extends Fragment {
Toolbar toolbar;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_item,container,false);
return rootView;
}
现在我希望在对页面进行剪贴时具有相同的片段,但是要使用diff文本,我该怎么做..如果可能,还可以使用回收站视图。
答案 0 :(得分:0)
您可以使用公共抽象updateView()创建一个新的类(UpdatingFragment);扩展了片段。
通过扩展UpdatingFragment而不是Fragment创建您的SliderFragment
在onCreateView()的SliderFragment中,最后调用“ updateView()”
在SliderFragment中为您需要更新的内容(要在用户界面上显示的所有内容)写一个覆盖方法
调整您的screenAdapter返回并使用UpdatingFragment的而不是Fragments
现在,每当调用您的片段onCreateView时,它们的所有UI数据都会更新,并且如果您创建SliderFragments列表并将其传递到适配器中而不是创建新的列表,则只需在该列表上运行for循环并调用updateView ()每个片段。