如何解决如何使用 ViewPager2 在 TabLayout 中实现列表项
我是 Android 开发新手,目前正在使用 Viewpager2 学习 TabLayout。 我已经在我的适配器中对 Fragments 进行了硬编码。顺便说一句,我需要用列表添加我所有的片段。那么如何在列表或 Arrylist 中添加 Fragment。请帮帮我。
这是适配器代码:
public class ScreenSliderAdapter extends FragmentStateAdapter{
public ScreenSliderAdapter(@NonNull FragmentManager fragmentManager,@NonNull Lifecycle lifecycle) {
super(fragmentManager,lifecycle);
}
@NonNull
@Override
public Fragment createFragment(int position) {
if (position==0) {
return new BangladeshFragment();
} else if (position==1) {
return new BrazilFragment();
} else if (position==2) {
return new MaltaFragment();
}
return new BangladeshFragment();
}
@Override
public int getItemCount() {
return 3;
}
}
这是主要活动代码:
公共类 MainActivity 扩展 AppCompatActivity {
FragmentManager fm;
ScreenSliderAdapter sa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fm = getSupportFragmentManager();
sa = new ScreenSliderAdapter(fm,getLifecycle());
ViewPager2 pager = findViewById(R.id.pager);
TabLayout tabLayout = findViewById(R.id.tabLayoutID);
tabLayout.addTab(tabLayout.newTab().setText("Bangladesh"));
tabLayout.addTab(tabLayout.newTab().setText("Brazil"));
tabLayout.addTab(tabLayout.newTab().setText("Malta"));
pager.setAdapter(sa);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
tabLayout.selectTab(tabLayout.getTabAt(position));
}
});
}
}
解决方法
活动
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
import java.util.ArrayList;
public class MyActivity extends AppCompatActivity {
ViewPager2 myViewPager2;
MyAdapter MyAdapter;
private ArrayList<String> arrayList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
myViewPager2 = findViewById(R.id.view_pager);
arrayList.add("Item 1");
arrayList.add("Item 2");
arrayList.add("Item 3");
arrayList.add("Item 4");
arrayList.add("Item 5");
MyAdapter = new MyAdapter(this,arrayList);
myViewPager2.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
myViewPager2.setAdapter(MyAdapter);
}
}
新功能
myViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {
super.onPageScrolled(position,positionOffset,positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
Log.e("Selected_Page",String.valueOf(position));
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
我的适配器
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private Context context;
private ArrayList<String> arrayList = new ArrayList<>();
public MyAdapter(Context context,ArrayList<String> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.list_item,parent,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder,int position) {
holder.tvName.setText(arrayList.get(position));
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView tvName;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
tvName = itemView.findViewById(R.id.tvName);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。