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[])