我一直在尝试显示可绘制文件夹中的位图,调整它们的大小(这部分工作得很好)并将它们放在列表视图中,但是当我运行我的代码时,什么都没有出现......
在这里:
public class MainActivity extends AppCompatActivity {
ImageView image;
Bitmap[] data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
ListView list=(ListView)findViewById(R.id.list);
data=new Bitmap[4];
calculateInSampleSize size=new calculateInSampleSize();
data[0]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image1,100,100));
data[1]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image2,100,100));
data[2]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image3,100,100));
data[3]=(size.decodeSampledBitmapFromResource(getResources(),R.drawable.ic_image4,100,100));
Adapter adapter=new Adapter(this,R.layout.pager_item,data);
list.setAdapter(adapter);
我的适配器:
public class Adapter extends BaseAdapter{
Bitmap[] dataSource;
LayoutInflater minflater;
Activity parentActivity;
int itemLayout;
// constructor for adapter
public Adapter (Activity activity, int layout, Bitmap[] ds){
parentActivity = activity;
itemLayout = layout;
dataSource = ds;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView view;
if(convertView!=null){
view=(ImageView)convertView;
}
else{
view=(ImageView)minflater.inflate(itemLayout,parent,false);
view.setImageBitmap(dataSource[position]);
}
return view;
}
当然,我有一个带有列表视图的布局,另一个带有图像视图(pager_item.XML)
谢谢你的帮助
修改适配器,如下所示:
@Override
public int getCount() {
return dataSource.length;
}
和
@Override
public Bitmap getItem(int position) {
return dataSource[position];
}
问题是你在
@Override
public int getCount() {
return 0;
}
你应该返回
dataSource.length;
和在
@Override
public Bitmap getItem(int position) {
return null;
}
你应该返回
return dataSource[position];
我做了你们两个的答案,但是每当我启动它时,我的应用程序都会崩溃。
我改变了一些东西:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=null;
if(convertView!=null){
view=convertView;
}
else{
view= minflater.inflate(itemLayout, parent, false);
ImageView imageView=(ImageView)view.findViewById(R.id.image);
imageView.setImageBitmap(dataSource[position]);
}
return view;
}
我在我的构造函数中添加了这个:
minflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
谢谢!