public class zhujiemianActivity extends AppCompatActivity implements RecyAdapter.OnItemClickListener{
public String TAG = "zhuejiamianActivity";
private ImageView img;
private RecyclerView recy;
private Integer[] mImgIds={R.drawable.dggj1,R.drawable.dggj2,R.drawable.dggj3};
private List<Integer> data;
private RecyAdapter recyAdapter;
private Handler mHandler=new Handler();
private LinearLayoutManager layoutManager;
private int oldItem=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zhujiemian2);
init();
initdata();
initRecy();
img.setImageResource(data.get(0));
recyAdapter.setOnItemClickListener(this);
}
public void init()
{
img=findViewById(R.id.gundongimage);
recy=findViewById(R.id.gundong);
}
Runnable runnable=new Runnable() {
@Override
public void run() {
recy.scrollBy(3, 0);
int first= layoutManager.findFirstVisibleItemPosition();
if(first!=oldItem&&first>0)
{
oldItem=first;
img.setImageResource(data.get(oldItem%data.size()));
}
Log.e(TAG,"run:first:"+first);
mHandler.postDelayed(runnable,10);
}
};
//配置适配器
private void initRecy()
{
recyAdapter=new RecyAdapter(this,data);
layoutManager =new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recy.setLayoutManager(layoutManager);
recy.setAdapter(recyAdapter);
}
private void initdata()
{
data=new ArrayList<>();
for (int i=0;i<mImgIds.length;i++)
{
data.add(mImgIds[i]);
}
}
@Override
protected void onResume() {
super.onResume();
mHandler.postDelayed(runnable,10);
}
@Override
protected void onStop() {
super.onStop();
mHandler.removeCallbacks(runnable);
}
@Override
public void onItemClick(View view, int tag) {
Toast.makeText(this,"第"+tag+"张图片被点击了", Toast.LENGTH_SHORT).show();
}
}
23行能查到数据吗,断点看下,那个对象是空,是img还是data。
这是报错的内容
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
23行能查到啊
看你这截图是 data 为空了,最好是 img 跟data 都加非空判断,避免出现空指针
是不是imageview的id取错了,导致findviewbyid的时候,获取对应的控件失败
明显是data.get(0)的值是空,你可以判断一下再赋值
该错误说明,img对象为空,检查一下,布局文件中的ImageView元素,为什么 img=findViewById(R.id.gundongimage); 获取不到该ImageView对象