androidError:(18,18)错误:适配器是抽象的;无法实例化

时间:2017-05-10 07:29:45

标签: java android

我是一名新手Android开发人员。 我试图构建一个显示图像滑块的Android应用程序。 我使用'Adapter'并尝试实例化Adapter对象'adapter'。 但是,弹出错误信息,说,'错误:(18,18)错误:适配器是抽象的;无法实例化。'。 我已经搜索了这个问题的解决方案,并且Stackoverflow中的某个人说要实例化Adapter,首先Adapter类应该继承PageAdapter类。我做了如下,然而,出现了同样的错误。我的代码出了什么问题? 下面是'Adapter.java',Adapter类的代码。

package com.example.clee.tutorial9;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;


public class Adapter extends PagerAdapter {

private int[] images= {R.drawable.one, R.drawable.two, R.drawable.three};
//one, two, three are the name of the images.

private LayoutInflater inflater;
private Context context;

public Adapter(Context context){
    this.context= context;
}

@Override
public int getCount() {
    return images.length;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view==((LinearLayout) object);
}

@Override
public Object instantiateItem(ViewGroup container, int position){
    inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v= inflater.inflate(R.layout.slider, container, false);
    ImageView imageview= (ImageView) v.findViewById(R.id.imageView);
    TextView textview= (TextView) v.findViewById(R.id.textView);
    imageview.setImageResource(images[position]);
    textview.setText((position +1) + "image.");
    container.addView(v);
    return v;
   }

@Override
public void destroyItem(ViewGroup container, int position, Object object){
    container.invalidate();
   }
}

这是'MainActivity.java'的代码。

package com.example.clee.tutorial9;

import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Adapter;


public class MainActivity extends AppCompatActivity {

Adapter adapter;
ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    viewPager= (ViewPager) findViewById(R.id.view);
    adapter= new Adapter(this);
    viewPager.setAdapter(adapter);
    }
}

错误发现在'MainActivity.java'的第19和第20句中。 总而言之,我在代码中有两个错误。

  1. Adaper是抽象的:无法实例化。

  2. 不兼容类型:无法将适配器转换为PageAdapter。

2 个答案:

答案 0 :(得分:1)

将适配器类重命名为CustomAdapter或任何其他名称。 因为您目前指的是android.widget.Adapter

答案 1 :(得分:0)

您使用了错误的Adapter类,因为您导入了错误的包:android.widget.Adapter;

导入此代码:

com.example.clee.tutorial9.Adapter

更好,不要在SDK中使用已定义的类定义您的类,因此将 适配器 重命名为 MyAppAdampter < / strong>并导入

com.example.clee.tutorial9.MyAppAdampter