使用ViewPager

时间:2019-03-10 01:53:05

标签: java android android-fragments

我有一个fragment和一个ListView按钮。单击这些按钮中的每个按钮,将转到另一个fragment。所有这些按钮都将移至相同的片段,但是我想根据单击哪个按钮来自定义片段。

对于我的列表视图,我使用适配器来显示其内容。我列出Exercises的清单,并为每个练习创建一个按钮。

public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View exerciseItemView = convertView;
    if ( exerciseItemView == null ) {
        exerciseItemView = LayoutInflater.from( mContext ).inflate( R.layout.custom_exercise_card, parent, false );
    }

    final Exercise exercise = exerciseList.get( position );

    Button exerciseBtn = exerciseItemView.findViewById( R.id.exerciseStatBtn );
    exerciseBtn.setText( exercise.ExerciseName );

    exerciseBtn.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ( (RecordStatsActivity) mContext ).setViewPager( 1 );
        }
    } );
    return exerciseItemView;
}

在我的活动中,我定义了ViewPager及其功能。

public class RecordStatsActivity extends BaseActivity {
    private static final String TAG = "RecordStatsActivity";
    public volatile Exercise currExercise;
    private SectionStatePagerAdapter mSectionStatePagerAdapter;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_record_stats );
        mSectionStatePagerAdapter = new SectionStatePagerAdapter( getSupportFragmentManager() );
        mViewPager = findViewById( R.id.stats_container );
        setupViewPager( mViewPager );
    }

    private void setupViewPager(ViewPager viewPager) {
        SectionStatePagerAdapter adapter = new SectionStatePagerAdapter( getSupportFragmentManager() );
        adapter.addFragment( new StatMainFragment(), "StatMainFragment" );
        adapter.addFragment( new StatExerciseFragment(), "StatExerciseListFragment" );
        viewPager.setAdapter( adapter );
    }

    public void setViewPager(int fragmentId) {
        mViewPager.setCurrentItem( fragmentId );
    }

}

是否可以使用ViewPager传递参数以使片段知道按下了哪个按钮。

示例:假设我在Squat练习中按下了按钮。然后,新片段可以将其EditText mTitle更改为“蹲”或类似的内容。

有什么想法吗?

0 个答案:

没有答案