如何将Textview值添加到gridview?

时间:2017-11-02 19:50:18

标签: android android-adapter

您好,并且事先感谢,我试图获取一些照片并将其添加到Android中的gridview,我设法使用Gridview ImageAdapter,但我想在TextView中获取文本值,我将文本存储在Arraylist中,这是我的适配器:

public class ImageAdapter  extends BaseAdapter {

private Context mContext;



    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return MainActivity.charactersimageurl.size();
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(175, 175));
    //    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        //    imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        Picasso.with(this.mContext).load(MainActivity.charactersimageurl.get(position)).into(imageView);
        return imageView;
    }

这是我的Xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@color/FourthColor"
android:orientation="vertical"
android:padding="5dp">

<ImageView
    android:id="@+id/image"
    android:layout_width="100dp"
    android:layout_height="100dp" />

<TextView
    android:id="@+id/undertitle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:gravity="center"
    android:textSize="12sp" />

1 个答案:

答案 0 :(得分:1)

您不需要将MainActivity.charactersimageurl作为static并将网址ArrayList添加到ImageAdapter构造函数中。您可以在getItem()中使用getView()

public class ImageAdapter  extends BaseAdapter {
  private Context mContext;
  private List<String> imageUrls;

  public ImageAdapter(Context c, List<String> imageUrls) {
    mContext = c;
    this.imageUrls = imageUrls;
  }

  public int getCount() {
    return imageUrls.size();
  }

  public Object getItem(int position) {
    return imageUrls.get(position);
  }

  public long getItemId(int position) {
    return 0;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) {  // if it's not recycled, initialize some attributes
      imageView = new ImageView(mContext);
      imageView.setLayoutParams(new GridView.LayoutParams(175, 175));
      //    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
      //    imageView.setPadding(8, 8, 8, 8);
    } else {
      imageView = (ImageView) convertView;
    }

    String imageUrl = (String) getItem(position);
    Picasso.with(this.mContext).load(imageUrl).into(imageView);
    return imageView;
  }

如果您想更改列表项,则需要添加addItem(String url),如下所示。

public void addItem(String url) {
    imageUrls.add(url);
    notifyDataSetChanged();
}