[英]Using a Pager adapter with ViewPager2
我正在尝试创建一个受欢迎的 slider 但调用slideView.setAdapter(sliderAdapter);
时出现问题 . 有一个错误说
所需类型适配器,提供 SliderAdapter
我正在使用ViewPager2
并且我使用的是旧的ViewPager
适配器。 那是问题吗?
package com.example.leblood;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.viewpager.widget.PagerAdapter;
public class SliderAdapter extends PagerAdapter {
Context context;
LayoutInflater layoutInflater;
public SliderAdapter(Context context){
this.context = context;
}
public int[] slide_images = {
R.drawable.donat,
R.drawable.request,
R.drawable.bloodmap
};
public String[] slide_heading = {
"Donate Blood",
"Request Blood",
"Track Requests"
};
public String[] slide_desc = {
"You can donate at any time just by filling the form",
"Request any type of blood anywhere in Lebanon",
"Track blood requests, donation centers and pinpoint their location"
};
@Override
public int getCount() {
return slide_heading.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.slider, container, false);
ImageView slideImageView = (ImageView) view.findViewById(R.id.slide_image);
TextView slideHeading = (TextView) view.findViewById(R.id.slide_heading);
TextView slideDescription = (TextView) view.findViewById(R.id.slide_desc);
slideImageView.setImageResource(slide_images[position]);
slideHeading.setText(slide_heading[position]);
slideDescription.setText(slide_desc[position]);
container.addView(view);
return view;
}
@Override
public void destroyItem( ViewGroup container, int position, Object object) {
container.removeView((ConstraintLayout)object);
}
}
package com.example.leblood;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
private ViewPager2 slideView;
private LinearLayout dots;
private SliderAdapter sliderAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
slideView = findViewById(R.id.SlideviewPager);
dots = (LinearLayout) findViewById(R.id.dots);
sliderAdapter = new SliderAdapter(MainActivity.this);
slideView.setAdapter(**sliderAdapter**);
}
}
<LinearLayout
android:id="@+id/dots"
android:layout_width="80dp"
android:layout_height="77dp"
android:layout_marginTop="6dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/SlideviewPager">
</LinearLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/SlideviewPager"
android:layout_width="match_parent"
android:layout_height="779dp"
tools:ignore="MissingConstraints">
</androidx.viewpager2.widget.ViewPager2>
</androidx.constraintlayout.widget.ConstraintLayout>
ViewPager2
使用RecyclerView.Adapter
来提供其内容。 因此,您可以将旧的ViewPager
与当前的适配器(我不推荐)一起使用,也可以迁移到新的。
他们实际上提供了一个全面的 迁移指南,所以我建议你看一看,特别是如果你以前从未使用过RecyclerView
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.