android写轮播图代码没问题,运行起来啥也不显示
各位大佬 ,请问为啥我写轮播图的时候 ,代码没有报错 但是运行起来没有任何反应,啥都没有,跟着视频敲得代码,因为不会,我是刚学的小白,求帮忙找找问题在哪里
下面这是activity_main.xml代码
<?xml version="1.0" encoding="utf-8"?>
<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"
android:orientation="horizontal"
tools:context=".MainActivity">
<!-- ViewPager主要是用来实现轮播图的效果的,当用户左右滑动界面的时候
当前的屏幕显示当前的界面和下一个界面的一部分,滑动结束后,
界面自动跳转到当前选择的界面中-->
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="250dp"
>
</androidx.viewpager.widget.ViewPager>
</LinearLayout>
下面的是perger.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/cover"
android:layout_width="match_parent"
android:layout_height="match_parent"></ImageView>
</LinearLayout>
下面的是MainActivity.java代码
package com.example.bigwork;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager myViewPager;//设置为成员变量,因为后期可能会用到
private List<Integer> myData = new ArrayList<>(); //写一个存放数据的数组集合
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView(); //是我自己定义的一个方法,用于初始化一些控件
initData(); //需要一个可以存放数据的方法,用于直接调用
}
//需要用一个集合来把保存数据 List<Integer>
private void initData() {
myData.add(R.drawable.piczl);
myData.add(R.drawable.picwwd);
myData.add(R.drawable.picsq);
myData.add(R.drawable.pictomcat);
myPagerAdapter.notifyDataSetChanged(); //实时更新,以防出错
}
private void initView() {
myViewPager = this.findViewById(R.id.viewpager); //在activity中查找id为viewpager的控件
myViewPager.setAdapter(myPagerAdapter);//设置适配器,进去setAdapter可以看见需要一个PagerAdapter类,所以要新建一个PagerAdapter类,用于继承
}
//这是新建的PagerAdapter类
private PagerAdapter myPagerAdapter = new PagerAdapter() {
@Override
public int getCount() {
return myData.size(); //返回数据的数量,要先写一个数据集合,
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
// return super.instantiateItem(container, position);
View item= LayoutInflater.from(container.getContext()).inflate(R.layout.pager,container,false);
ImageView iv = item.findViewById(R.id.cover);
//设置数据
iv.setImageResource(myData.get(position));
return iv;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
// super.destroyItem(container, position, object);
container.removeView((View) object);
}
};
}
这个应该是initData没成功,initView在它之前,换个顺序就好了,java是按代码顺序运行的
inflate哪里直接改成true应该就可以了,你这没添加进去肯定啥也不显示。而且你这都不显示了为啥能叫代码没问题?