我是一名新手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句中。 总而言之,我在代码中有两个错误。
Adaper是抽象的:无法实例化。
不兼容类型:无法将适配器转换为PageAdapter。
答案 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