通过扩展的baseadapter在gridview中简单地将位图添加到imageview

时间:2014-09-18 10:50:36

标签: android android-layout gridview android-adapter

我试图基本上使用扩展的basadapter类用一堆imageview填充我的gridview。我还没有实现视图持有者模式。代码似乎执行正常,没有例外等也主要活动出现但是为空。我想知道是否有一种方法我忘了在路上叫somwhere?这是我的主要活动onCreate()方法的代码。这将设置名为grid的gridview。

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_images);
    grid = (GridView) findViewById(R.id.gridView2);


    imagepresenter = new ImagePresenter(this);
    this.getImages();
}

getImages方法正常工作并返回一个arrayList。只需将第一个元素添加到主要活动的图像按钮即可。下面是我的主要Activity的布局,里面有Gridview元素。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".ImagesActivity">


<GridView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/gridView2"
    android:layout_centerHorizontal="true"
    android:layout_alignParentTop="true"
    android:numColumns="auto_fit"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="10dp"
    android:stretchMode="spacingWidthUniform"/>

</RelativeLayout>

我认为xml对此很好。接下来是我的baseadapter实现。没有实现视图持有者模式。这是我的下一步,一旦我可以看到一些图像出现在gridview中。我将我的ArrayList和上下文传递给mainactivity,这样我就可以给Imageview充气。这在我的主要活动中的另一种方法中被调用

public class GridAdapter extends BaseAdapter {

ArrayList<Bitmap> list = new ArrayList<Bitmap>();
Context context;


public GridAdapter(ArrayList<Bitmap> listin, Context contextin)
{
    list = listin;
    context = contextin;
 }

@Override
public int getCount() {
  return  list.size();
}

@Override
public Object getItem(int i) {
    return list.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.layoutimageview,viewGroup, false);
    ImageView imageView = (ImageView) v.findViewById(R.id.imageView);

    imageView.setImageBitmap(list.get(i));

    return v;
}

}

最后我有了layoutimageview.xml。这只是我在图像视图中膨胀并在getView()方法中返回。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<ImageView
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    android:scaleType="centerInside"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />
</RelativeLayout>

然后我在Main活动中调用grid.setAdapter()。

@Override
public void setImageButton(ArrayList<Bitmap> bitmaparrl) {

   grid.setAdapter(new GridAdapter(bitmaparrl,this));
  }

我真的不知道我在这里做错了什么。我觉得Iam可能在我现在看不到的路上错过了一条线。老实说,我认为它只是一个呈现问题的视图,因为代码不会抛出任何异常。如果有人有任何想法请评论。也很抱歉问题的长度。我已经梳理了几次代码,但是看不到什么丢失了。谢谢

0 个答案:

没有答案