如何使用RecyclerView更新片段数据?

时间:2018-10-04 04:26:14

标签: java android android-recyclerview fragment material

我有一个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文本,我该怎么做..如果可能,还可以使用回收站视图。

1 个答案:

答案 0 :(得分:0)

您可以使用公共抽象updateView()创建一个新的类(UpdatingFragment);扩展了片段。

通过扩展UpdatingFragment而不是Fragment创建您的SliderFragment

在onCreateView()的SliderFragment中,最后调用“ updateView()”

在SliderFragment中为您需要更新的内容(要在用户界面上显示的所有内容)写一个覆盖方法

调整您的screenAdapter返回并使用UpdatingFragment的而不是Fragments

现在,每当调用您的片段onCreateView时,它们的所有UI数据都会更新,并且如果您创建SliderFragments列表并将其传递到适配器中而不是创建新的列表,则只需在该列表上运行for循环并调用updateView ()每个片段。