Android 如何在LazyList或Universal Image Loader中显示动态数据?
我正在测试我发现的(LL)和(UIL)。此外,我还成功地进行了一些修改,以检索要从JSON文档加载的URL。这是来自Flickr的。我从JSON获得了url(用于获取照片)和更多数据,如标题、描述和作者。在使用这些图像加载工具之前,我使用SimpleAdapter将数据传递到视图,如下所示:Android 如何在LazyList或Universal Image Loader中显示动态数据?,android,json,lazy-loading,universal-image-loader,Android,Json,Lazy Loading,Universal Image Loader,我正在测试我发现的(LL)和(UIL)。此外,我还成功地进行了一些修改,以检索要从JSON文档加载的URL。这是来自Flickr的。我从JSON获得了url(用于获取照片)和更多数据,如标题、描述和作者。在使用这些图像加载工具之前,我使用SimpleAdapter将数据传递到视图,如下所示: // Hashmap for ListView ArrayList<HashMap<String, String>> itemsList = new
// Hashmap for ListView
ArrayList<HashMap<String, String>> itemsList = new ArrayList<HashMap<String, String>>();
//ListView的Hashmap
ArrayList itemsList=新的ArrayList();
然后编写一些代码将JSON数据放入itemsList,然后
ListAdapter adapter = new SimpleAdapter(this, itemsList,
R.layout.item,
new String[] { TAG_TITLE, TAG_DESCRIPTION, TAG_AUTHOR }, new int[] {
R.id.title, R.id.description, R.id.author });
setListAdapter(adapter);
// selecting single ListView item
ListView list = getListView();
// Launching new screen on Selecting Single ListItem
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String description = ((TextView) view.findViewById(R.id.description)).getText().toString();
String author = ((TextView) view.findViewById(R.id.author)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(TAG_TITLE, title);
in.putExtra(TAG_DESCRIPTION, description);
in.putExtra(TAG_AUTHOR, author);
startActivity(in);
}
});
ListAdapter=new simpledapter(这个,itemsList,
R.layout.item,
新字符串[]{TAG_TITLE,TAG_DESCRIPTION,TAG_AUTHOR},新int[]{
R.id.title,R.id.description,R.id.author});
setListAdapter(适配器);
//选择单个ListView项
ListView list=getListView();
//在选择单个列表项时启动新屏幕
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//从选定的ListItem获取值
字符串title=((TextView)view.findViewById(R.id.title)).getText().toString();
字符串描述=((TextView)view.findViewById(R.id.description)).getText().toString();
字符串author=((TextView)view.findviewbyd(R.id.author)).getText().toString();
//开始新的意图
Intent in=新的Intent(getApplicationContext(),SingleMenuItemActivity.class);
in.putExtra(标签标题,标题);
in.putExtra(标签描述,描述);
in.putExtra(TAG_AUTHOR,AUTHOR);
星触觉(in);
}
});
接下来呢。现在,我试图将代码与LL或UIL合并,但无法使其工作
这些图像加载程序使用自己的适配器和GetWiew方法。因此,最后一个问题是:
如何将自己的动态数据传递给他们的适配器?
为了更清楚,我想在照片右侧显示标题、描述和作者等信息,而不是下面图片中的“项目X”: 使用自定义适配器:
public class MySimpleAdapter extends SimpleAdapter {
private List<String> mImageUrls;
public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, List<String> imageUrls, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
mImageUrls = imageUrls;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
ImageView imageView = view.findViewById(R.id.my_image);
ImageLoader.getInstance().displayImage(mImageUrls.get(position), imageView);
return view;
}
}
公共类mysimpledapter扩展了simpledapter{
私有列表;
公共MySimpleAdapter(上下文上下文,列表>数据,列表图像URL,int资源,字符串[]从,int[]到){
超级(上下文、数据、资源、从、到);
mImageUrls=imageUrls;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
ImageView ImageView=view.findViewById(R.id.my_图像);
ImageLoader.getInstance().displayImage(mImageUrls.get(位置),imageView);
返回视图;
}
}
然后将
imageURL
传递给构造函数。这样就行了。我在这个问题上采取了不同的方法。无论如何,谢谢你!