我有一个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
更改为“蹲”或类似的内容。
有什么想法吗?