OGeek|极客世界-中国程序员成长平台

标题: android - 将 String[] 传递给 Adapter 但未显示输出 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-9 06:51
标题: android - 将 String[] 传递给 Adapter 但未显示输出

我将 String[] 和图像传递给图像网格的 Adapter 类。 请检查我的代码并让我知道错误应该在哪里,因为我没有收到任何错误和输出。由于程序正在运行,我在同一个适配器类中设置了 String[]

MainActivity

public class MainActivity extends AppCompatActivity {

public static String[] mThumbIds = {
        "http://10.0.2.2/e-stitch/img/1.gif",
        "http://10.0.2.2/e-stitch/img/1.gif",
        "http://10.0.2.2/e-stitch/img/1.gif",
        "http://10.0.2.2/e-stitch/img/1.gif",
        "http://10.0.2.2/e-stitch/img/1.gif",
        "http://10.0.2.2/e-stitch/img/1.gif",
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageAdapter imageAdapter = new ImageAdapter (MainActivity.this);
    imageAdapter.setimag(mThumbIds,mThumbIds.length);

    final GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));
    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            //   Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
            //   i.putExtra("id", position);
            //   startActivity(i);
        }
    });

}

图像适配器

 public class ImageAdapter extends BaseAdapter {
    private Context mContext;
    int imageTotal;
    public static String[] mThumbIds;

    public ImageAdapter(Context c) {
        mContext = c;
    }
    public void setimag(String[] mThumbIds,int count){
        this.mThumbIds = mThumbIds;
        this.imageTotal = count;
    }

    public int getCount() {
        return imageTotal;
    }

    @Override
    public String getItem(int position) {
        return mThumbIds[position];
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(480, 480));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }
        String url = getItem(position);
        Picasso.with(mContext)
                .load(url)
                .placeholder(R.drawable.loader)
                .fit()
                .centerCrop().into(imageView);
        return imageView;
    }
}

请帮帮我,因为我是 android 新手



Best Answer-推荐答案


这是你出错的地方 gridview.setAdapter(new ImageAdapter(this)); ,而不是传递初始化的适配器,而是传递没有图像 id 的新适配器。

更正的代码

ImageAdapter imageAdapter = new ImageAdapter (MainActivity.this);
imageAdapter.setimag(mThumbIds,mThumbIds.length);

final GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(imageAdapter);

关于android - 将 String[] 传递给 Adapter 但未显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545952/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://www.ogeek.cn/) Powered by Discuz! X3.4