Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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 在交错网格视图中从资源而不是URL调用图像?_Android_Android Gridview_Custom Adapter - Fatal编程技术网

Android 在交错网格视图中从资源而不是URL调用图像?

Android 在交错网格视图中从资源而不是URL调用图像?,android,android-gridview,custom-adapter,Android,Android Gridview,Custom Adapter,我拥有的是开源交错网格视图适配器,它构建了一个漂亮的动态网格视图。这里是主要的活动代码: public class MainActivity extends Activity { private String urls[] = { "http://farm7.staticflickr.com/6101/6853156632_6374976d38_c.jpg", "http://farm8.staticflickr.com/7232/6913504

我拥有的是开源交错网格视图适配器,它构建了一个漂亮的动态网格视图。这里是主要的活动代码:

public class MainActivity extends Activity {
private String urls[] = { 
            "http://farm7.staticflickr.com/6101/6853156632_6374976d38_c.jpg",
            "http://farm8.staticflickr.com/7232/6913504132_a0fce67a0e_c.jpg",
            "http://farm5.staticflickr.com/4133/5096108108_df62764fcc_b.jpg",
            "http://farm5.staticflickr.com/4074/4789681330_2e30dfcacb_b.jpg"};
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StaggeredGridView gridView = (StaggeredGridView) this.findViewById(R.id.staggeredGridView1);

        int margin = getResources().getDimensionPixelSize(R.dimen.margin);

        gridView.setItemMargin(margin); // set the GridView margin

        gridView.setPadding(margin, 0, margin, 0); // have the margin on the sides as well 

        StaggeredAdapter adapter = new StaggeredAdapter(MainActivity.this, R.id.imageView1, urls);

        gridView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
下面是适配器代码:

public class StaggeredAdapter extends ArrayAdapter<String> {

    private ImageLoader mLoader;

    public StaggeredAdapter(Context context, int textViewResourceId,
            String[] objects) {
        super(context, textViewResourceId, objects);
        mLoader = new ImageLoader(context);
    }

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

        ViewHolder holder;

        if (convertView == null) {
            LayoutInflater layoutInflator = LayoutInflater.from(getContext());
            convertView = layoutInflator.inflate(R.layout.row_staggered_demo,
                    null);
            holder = new ViewHolder();
            holder.imageView = (ScaleImageView) convertView .findViewById(R.id.imageView1);
            convertView.setTag(holder);
        }

        holder = (ViewHolder) convertView.getTag();

        mLoader.DisplayImage(getItem(position), holder.imageView);

        return convertView;
    }

    static class ViewHolder {
        ScaleImageView imageView;
    }
}
我已将适配器中的构造函数更改为:

public StaggeredAdapter(Context context, int textViewResourceId,
            int[] objects) {
但我一直看到这行有一个错误:

super(context, textViewResourceId,objects);
为什么会发生这种情况??我如何从资源而不是链接调用我的图像?我做错了什么

错误显示:

The constructor ArrayAdapter<String>(Context, int, int[]) is undefined
构造函数ArrayAdapter(Context,int,int[])未定义

您无权访问

ArrayAdapter(Context, int, int[]) ArrayAdapter(上下文,int,int[])) 因为您将T定义为字符串,所以您可以访问的实际构造函数是

ArrayAdapter(Context, int, String[]) ArrayAdapter(上下文、int、字符串[])
我希望它是有意义的

那么我在哪里可以找到实际的构造函数呢?实际的构造函数类似于ArrayAdapter(Context,int,T[]),而T是在公共类StaggeredAdapter扩展ArrayAdapter时定义的。请看一下Java中的泛型。它应该使它更清楚我有完全相同的问题,除了我使用滑动加载图像。你找到解决办法了吗? ArrayAdapter(Context, int, String[])