У меня есть 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
на «Присед» или что-то в этом роде.
Есть идеи?