【问题标题】:How to Show Dynamic Data in LazyList or Universal Image Loader?如何在 LazyList 或通用图像加载器中显示动态数据?
【发布时间】:2012-11-16 13:19:46
【问题描述】:

我正在测试我发现 hereLazyList (LL) 和 Universal Image Loader (UIL)。此外,我还成功地进行了一些修改,以检索要从 JSON 文档加载的 URL。 JSON 来自 Flickr。我从 JSON 中获得了 url(用于获取照片)和 titledescriptionauthor 等更多数据。在使用这些图像加载工具之前,我使用 SimpleAdapter 将数据传递给视图,如下所示:

    // Hashmap for ListView        
    ArrayList<HashMap<String, String>> itemsList = new ArrayList<HashMap<String, String>>();

然后是一些将 JSON DATA 放入 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);
        }
    });

关注此guide。现在我尝试将我的代码与 LL 或 UIL 合并,我无法让它工作。

这些图像加载器使用自己的适配器和 GetWiew 方法。所以最后的问题是: 如何将我自己的动态数据传递给他们的适配器?


为了更清楚,我想在照片右侧显示 titledescriptionauthor 等信息,而不是下图中的“项目 X”:

【问题讨论】:

    标签: android json lazy-loading universal-image-loader


    【解决方案1】:

    使用自定义适配器:

    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;
        }
    }
    

    并将imageUrls 传递给构造函数。

    【讨论】:

    • 那行得通。我对这个问题采取了不同的方法。无论如何,谢谢你!
    猜你喜欢
    • 2020-06-29
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2015-09-30
    • 2013-12-29
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多