Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有imageview和文本的自定义imageadapter_Android - Fatal编程技术网

Android 带有imageview和文本的自定义imageadapter

Android 带有imageview和文本的自定义imageadapter,android,Android,如何使用图像本身和文本将图像添加到gridview中。我试图制作自定义图像适配器,但由于某种原因无法工作,在imgView.setLayoutParams(新的GridView.LayoutParams(85,85))上出现崩溃 新问题如何从映像适配器中添加和删除。。。我需要的行为就像一个图片与a,我添加了相同的图片与文字ab,所以应该有2张图片,然后我可以删除一个与a import java.util.ArrayList; import android.content.Context; im

如何使用图像本身和文本将图像添加到gridview中。我试图制作自定义图像适配器,但由于某种原因无法工作,在imgView.setLayoutParams(新的GridView.LayoutParams(85,85))上出现崩溃

新问题如何从映像适配器中添加和删除。。。我需要的行为就像一个图片与a,我添加了相同的图片与文字ab,所以应该有2张图片,然后我可以删除一个与a

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AlbumAdapter extends BaseAdapter {

    private Context mContext;
    private ArrayList albNames;

    public AlbumAdapter(Context c, ArrayList albNames) {

        mContext = c;
        this.albNames = albNames;
    }

    public int getCount() {

        return mThumbIds.length;
    }

    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(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(10, 10, 10, 3);
        } 

        else {

            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    */

    public View getView(int position, View convertView, ViewGroup parent) {

        View view;

        if (convertView == null) {

            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.album_image, null);
        } 

        else {

            view = convertView;
        }

        ImageView imgView = (ImageView) view.findViewById(R.id.icon_image);
        imgView.setLayoutParams(new LinearLayout.LayoutParams(50, 50));
        imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imgView.setPadding(10, 10, 10, 3);
        TextView albNameView = (TextView) view.findViewById(R.id.icon_text);

        if (albNames.size() > 0) {

            for (int i = 0; i < albNames.size(); i++) {

                imgView.setBackgroundResource(R.drawable.folder);           
                albNameView.setText((String)albNames.get(i));

            }

        }




        return view;
    }


    // references to our images
    public Integer[] mThumbIds = { R.drawable.folder};

}
import java.util.ArrayList;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.GridView;
导入android.widget.ImageView;
导入android.widget.LinearLayout;
导入android.widget.TextView;
公共类AlbumAdapter扩展了BaseAdapter{
私有上下文;
私人ArrayList albNames;
公共相册适配器(上下文c、ArrayList albNames){
mContext=c;
this.albNames=albNames;
}
public int getCount(){
返回mThumbIds.length;
}
公共对象getItem(int位置){
返回null;
}
公共长getItemId(int位置){
返回0;
}
//为适配器引用的每个项目创建新的ImageView
/*公共视图getView(int位置、视图转换视图、视图组父视图){
图像视图图像视图;
如果(convertView==null){//如果它没有被回收,初始化一些属性
imageView=新的imageView(mContext);
setLayoutParams(新的GridView.LayoutParams(85,85));
imageView.setScaleType(imageView.ScaleType.CENTER\U裁剪);
设置填充(10,10,10,3);
} 
否则{
imageView=(imageView)convertView;
}
setImageResource(mThumbIds[position]);
返回图像视图;
}
*/
公共视图getView(int位置、视图转换视图、视图组父视图){
视图;
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u充气器\u服务);
视图=充气机。充气(R.layout.album_图像,空);
} 
否则{
视图=转换视图;
}
ImageView imgView=(ImageView)view.findViewById(R.id.icon\u image);
imgView.setLayoutParams(新的LinearLayout.LayoutParams(50,50));
imgView.setScaleType(ImageView.ScaleType.CENTER\U裁剪);
imgView.setPadding(10,10,10,3);
TextView albNameView=(TextView)view.findViewById(R.id.icon\u text);
如果(albNames.size()>0){
对于(int i=0;i
试试看

编辑

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AlbumAdapter extends BaseAdapter {

    private Context mContext;

    public AlbumAdapter(Context c) {

        mContext = c;
    }

    public int getCount() {

        return mThumbIds.length;
    }

    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(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(10, 10, 10, 3);
        } 

        else {

            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    */

    public View getView(int position, View convertView, ViewGroup parent) {

        View view;

        if (convertView == null) {

            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.album_image, null);
        } 

        else {

            view = convertView;
        }

        ImageView imgView = (ImageView) view.findViewById(R.id.icon_image);
        imgView.setLayoutParams(new LinearLayout.LayoutParams(85, 85));
        imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imgView.setBackgroundResource(R.drawable.a);

        TextView albNameView = (TextView) view.findViewById(R.id.icon_text);
        albNameView.setText("as");

        return view;
    }


    // references to our images
    public Integer[] mThumbIds = { R.drawable.a };

}

“imgView”是ConvertView的子级,它是从R.layout.album_图像中膨胀出来的,该图像只是一个线性布局。因此,在设置布局参数时,它需要是父视图组类型。所以LinearLayout.LayoutParams工作正常

假设您想设置“ConvertView”的大小,那么在这种情况下,它需要是GridView.LayoutParams,因为“ConvertView”被添加到父项GridView中


希望你得到它

我认为imageview的父级是线性布局。您试过了吗?如何从imageadapter中添加和删除。我在imageadapter中有一张图片,我希望每次都在textview中添加相同的图片,并使用不同的名称删除该图片和更新imageadapter。很简单,您需要更改适配器中的数据(例如mThumbIds),然后使适配器无效请参见
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class AlbumAdapter extends BaseAdapter {

    private Context mContext;

    public AlbumAdapter(Context c) {

        mContext = c;
    }

    public int getCount() {

        return mThumbIds.length;
    }

    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(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(10, 10, 10, 3);
        } 

        else {

            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    */

    public View getView(int position, View convertView, ViewGroup parent) {

        View view;

        if (convertView == null) {

            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.album_image, null);
        } 

        else {

            view = convertView;
        }

        ImageView imgView = (ImageView) view.findViewById(R.id.icon_image);
        imgView.setLayoutParams(new LinearLayout.LayoutParams(85, 85));
        imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imgView.setBackgroundResource(R.drawable.a);

        TextView albNameView = (TextView) view.findViewById(R.id.icon_text);
        albNameView.setText("as");

        return view;
    }


    // references to our images
    public Integer[] mThumbIds = { R.drawable.a };

}