【问题标题】:Android ListActivity onListItemClick calls adapter getViewAndroid ListActivity onListItemClick 调用适配器getView
【发布时间】:2011-06-28 17:28:05
【问题描述】:

我有一个非常简单的 Activity,它扩展了 ListActivity。 我正在重写方法 onListItemClick 执行一些自定义操作。

我在日志中看到的是适配器方法getView 在我单击列表项后被调用(我也将其覆盖以使我的列表由自定义视图组成)。

现在,我想知道这是否是正确的行为。如果是我可能有问题。

问题是我的列表项有图像,这些图像是从 Web 获取的,当我单击列表项时,对适配器的调用会导致对 Web 的调用刷新列表中的图像并出于某种原因将它们弄乱.

任何人都可以遮光吗?

这是我的getView

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ContentListItemView cv = null;
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(this.context);
            convertView = (RelativeLayout) inflater.inflate(this.layout, null);
            cv = new ContentListItemView(convertView);
        } else {
            cv = (ContentListItemView) convertView.getTag();
        }
        Log.d(this.getClass().getSimpleName(), "position: " + position);
        cv.init(getItem(position));
        convertView.setTag(cv);
        return convertView;
    }

这是我的OnListItemClick

protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        //Log.d(this.getClass().getSimpleName(), position + " " + id);
        Intent contentDetailsIntent = new Intent(this, ContentDetailsActivity.class);
        contentDetailsIntent.putExtra("com.tamtamy.jatta.content_list_item_selected", position);
        contentDetailsIntent.putExtra("com.tamtamy.jatta.datasource", ContentDetailsActivity.CONTENT_LIST);
        contentDetailsIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(contentDetailsIntent);
    }

【问题讨论】:

  • 适配器是一个对象。不调用对象。方法被调用。我建议您修改您的问题以修复您的“适配器被调用”语句,以绝对准确地确定适配器上正在调用的方法。
  • 我做了,现在更清楚了吗?你能帮帮我吗?

标签: android listactivity listadapter


【解决方案1】:

如果它正在发生,那么它是否正确并不真正相关,这是你必须处理的事情。

我的建议是在本地缓存图片in your apps cache directory,这样您就不需要每次都通过网络获取它们。

要注意的另一件事是列表项视图确实会被回收,因此您的应用程序不应假定在获取图像之前传递的 ContentListItemView 在图像下载后仍然是同一行。做出这种不正确的假设通常是导致 ListView 行中的图像不正确的原因。

查看讨论图像下载的multi-threading blog post on Googles Android developers blog,并提供指向 Google 代码示例的链接,该示例应该为您提供如何解决图像加载问题的好示例。

【讨论】:

    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    相关资源
    最近更新 更多