我是编码的新手,但是我有些固执。我有一组5个幻灯片,每个幻灯片约30张。我有一个带有5个按钮的活动。我正在使用ViewPagerAdapter从可绘制文件夹中加载幻灯片。使用我在此处发布的代码,所有人都可以使用第一个按钮。该代码将加载所有〜30张图像以进行幻灯片演示。现在,当我尝试为第二个按钮加载可绘制对象中的不同文件创建新的ViewPagerAdapter(无法使用重复的名称,因此将其重命名为ViewPagerAdapterBD。不确定这是否错误)时,代码中的类将灰显说“从未使用过ViewPagerAdapterBD”。我继续加载新图像,但是第二个按钮仍然会从第一个按钮加载文件。我的问题是,如何让我的5个按钮打开可绘制文件夹中的不同图像?要使按钮打开不同的图像,最终使每个按钮显示不同的幻灯片,我需要做什么?还是更好的措词,我想知道如何使用viewpageradapter在不同的活动上使用imageslider?
BurstMode.java
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class BurstMode extends AppCompatActivity {
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_burst_mode);
getSupportActionBar().setTitle("Burst Mode");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewPager);
ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);
viewPager.setAdapter(viewPagerAdapter);
}
}
activity_burst_mode.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".BurstMode">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v4.view.ViewPager>
</RelativeLayout>
ViewPagerAdapter.java
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private LayoutInflater layoutInflater;
private Integer [] images = {R.drawable.bm1,R.drawable.bm2,R.drawable.bm3,
R.drawable.bm4,R.drawable.bm5,R.drawable.bm6,R.drawable.bm7,
R.drawable.bm8,R.drawable.bm8,R.drawable.bm10,R.drawable.bm11,
R.drawable.bm12,R.drawable.bm13,R.drawable.bm14,R.drawable.bm15,
R.drawable.bm16,R.drawable.bm17,R.drawable.bm18,R.drawable.bm19,
R.drawable.bm20,R.drawable.bm21,R.drawable.bm22,R.drawable.bm23,
R.drawable.bm24,R.drawable.bm26,R.drawable.bm27,R.drawable.bm28,
R.drawable.bm29,R.drawable.bm30,R.drawable.bm31};
public ViewPagerAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
layoutInflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.custom_layout_burst_mode,
null);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
imageView.setImageResource(images[position]);
ViewPager vp = (ViewPager) container;
vp.addView(view,0);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull
Object object) {
ViewPager vp = (ViewPager) container;
View view = (View) object;
vp.removeView(view);
}
}
custom_layout_burst_mode.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal|center_vertical"
app:srcCompat="@android:drawable/btn_star_big_off"
tools:layout_editor_absoluteX="164dp"
tools:layout_editor_absoluteY="65dp" />
</LinearLayout>
以下是带有按钮的活动图像:Image
我想知道如何使每个按钮打开与其他按钮不同的不同图像集
答案 0 :(得分:0)
欢迎编程!
继续,然后废弃另一个类ViewPagerAdapterBD。相反,让我们扩展您已经编写的另一个类。
考虑ViewPagerAdapter的构造函数。
public ViewPagerAdapter(Context context) {
this.context = context;
}
为什么不在此处传递一个参数以使其行为不同?
public ViewPagerAdapter(Context context, SlideShowType type) {
this.context = context
this.type = type
}
继续并在Java中查找枚举类型,它将帮助您创建此SlideShowType枚举。完成此操作后,适配器可以在switch语句中检查此配置,并根据传递给构造函数的SlideShowType使用不同的图像数组!
另一个选择是将图像资源数组直接传递到构造函数中。让我知道您是否想跟进更多细节。