列表视图位图



我一直在尝试显示可绘制文件夹中的位图,调整它们的大小(这部分工作得很好)并将它们放在列表视图中,但是当我运行我的代码时,什么都没有出现......

在这里:

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);

谢谢!

最新更新