滚动时列表视图图像发生变化

2024-01-28

I am 解析 json数据在一个列表视图(图像视图和文本视图).首先四项列表视图的图像和文本视图正确添加但是当我滚动列表视图时,图像视图中的图像正在发生变化。 这是我的代码..

适配器.java

 public class Adapter extends BaseAdapter {

private static final String TAG = "Adapter";
private Activity mActivity;
public ArrayList<Data> mObjects;

Context context;

static class ViewHolder {
    static ImageView icon;
    TextView title;
    TextView name;
    TextView review;
    DownloadImageTask mTask;
    String ab[];
    // DownloadImageTask1 mTask1;
    // ImageView photo;
}

public Adapter(Activity activity, Context context, ArrayList<Data> mObjects) {

    this.mActivity = (Activity) activity;
    this.context = context;
    this.mObjects = mObjects;

}

public void setObjects(ArrayList<Data> mObjects) {
    this.mObjects = mObjects;
}

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

    final Data item = mObjects.get(position);
    View rowView = convertView;
    ViewHolder viewHolder;
    if (rowView == null) {
        LayoutInflater inflater = mActivity.getLayoutInflater();
        rowView = inflater.inflate(R.layout.item, parent, false);
        viewHolder = new ViewHolder();

        viewHolder.icon = (ImageView) rowView.findViewById(R.id.image);
        // viewHolder.photo = (ImageView) rowView.findViewById(R.id.photo);
        viewHolder.title = (TextView) rowView.findViewById(R.id.title);
        viewHolder.name = (TextView) rowView.findViewById(R.id.name);

        viewHolder.review = (TextView) rowView.findViewById(R.id.status);
        rowView.setTag(viewHolder);
    } 

    ViewHolder holder = (ViewHolder) rowView.getTag();

    holder.icon.setTag(position);

    holder.title.setText(item.getmTitle());
    // holder.name.setTag(position);
    holder.name.setText(item.getmConcatinate());

    holder.review.setText(item.getmreview());
    holder.icon.setBackgroundResource(R.drawable.ic_ab);
    holder.mTask = new DownloadImageTask(item.getmImageUrl(),

    holder.icon);
    if (!holder.mTask.isCancelled()) {
        holder.mTask.execute();
    }

    ViewHolder.icon.setTag(position);
    // }// update position because list view recycle

    ViewHolder.icon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("Parsing JSON Data", "Before user try122222"); // perform
            // Object tag= v.getTag();
            Log.d("Parsing JSON Data", "abc");

            int clickedPosition = (Integer) v.getTag();

            Data clickedItem = mObjects.get(clickedPosition);
            // Object vi=row.getTag();

            String title = clickedItem.getmConcatinate();
            String picture = clickedItem.getmImageUrl();

            Intent intent = new Intent(v.getContext(), LargeView.class);
            Log.d("Parsing JSON Data", "Before user try444444");
            intent.putExtra("data", title);

            intent.putExtra("image3", picture);

            v.getContext().startActivity(intent);
            Log.d("Parsing JSON Data", "Before user try7777");
        }
    });

    return rowView;
}

@Override
public int getCount() {

    return (this.mObjects.size());
}

@Override
public Object getItem(int position) {

    return (this.mObjects.get(position));
}

@Override
public long getItemId(int position) {

    return (position);
}

public AbsListView.RecyclerListener mRecyclerListener = new RecyclerListener() {

    public void onMovedToScrapHeap(View view) {
        ViewHolder viewHolder = (ViewHolder) view.getTag();
        DownloadImageTask imagetask = viewHolder.mTask;

        if (imagetask != null) {
            imagetask.cancel(true);
        }

    }

};

}

main.java

     @Override
protected void onCreate(Bundle savedInstanceState) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .detectAll().penaltyLog().build();
    StrictMode.setThreadPolicy(policy);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile3);

    name = (TextView) findViewById(R.id.textView1);
    bmImage2 = (ImageView) findViewById(R.id.imageView1);
    address = (TextView) findViewById(R.id.textView2);
    gender = (TextView) findViewById(R.id.textView3);
    loyalitypoints = (TextView) findViewById(R.id.textView7);
    followers = (TextView) findViewById(R.id.textView8);
    following = (TextView) findViewById(R.id.textView9);
    // list13 = new ArrayList<HashMap<String, Object>>();
    mListView = (ListView) findViewById(android.R.id.list);
    mListView.setClickable(true);






    // mListView=(ListView)findViewById(R.id.list);
    mAdapter = new Adapter(this,c,mSource );
    mListView.setAdapter(mAdapter);
    Log.w("Parsing JSON Data", "Before Item click");


    mListView.setRecyclerListener(mAdapter.mRecyclerListener);

}


首先,您已将 ViewHolder 中的 imageView 引用设置为静态。您不应该这样做,因为每个 getView 都会简单地覆盖它,并且您将始终让每个视图的 ViewHolder 仅引用一个 ImageView。 其次,您应该始终记住 ListView 正在回收视图,因此如果您开始为一个视图加载图像然后滚动它,那么在加载图像时,同一视图可能已经代表了另一个列表视图项。 总的来说,在 ListView 中有效地显示位图是一项相当复杂的任务,涉及相当多的变量。我建议你阅读this http://developer.android.com/training/displaying-bitmaps/index.html并下载他们提供的代码示例。这是一个很好的起点,在简单的情况下可能足以复制粘贴。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滚动时列表视图图像发生变化 的相关文章

  • ImageView 中的全尺寸图像

    我正在尝试在 ImageView 中绘制图像 但我希望它不缩放 并根据需要使用滚动条 我怎样才能做到这一点 现在我只有一个可绘制集作为 XML 中 ImageView 的 android src 这会自动缩放图像以适应屏幕宽度 我读到这可能
  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • Android studio 在日志猫中“清除全部”,更改日志级别过滤器时日志仍然会回来

    在 LogCat 中 当我单击 全部清除 按钮时 它似乎清除了所有日志 但是 如果我更改日志级别并返回到之前的日志级别 则所有日志都会返回 例如 我正在查看 Verbose 我选择 全部清除 日志清除 我切换到 调试 我切换回 详细 现在所
  • android 谷歌+登录定制

    我正在创建一个 Android 应用程序 现在我正在实现社交网络登录 Facebook 按钮很好 但 google 按钮的语言与 Facebook 不同 另外 它只说 登录 我想让它说 用谷歌登录 我是 android 编程的新手 看到我需
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • 将标题设置为操作栏时出现空指针异常

    Error Caused by java lang NullPointerException Attempt to invoke virtual method void android app ActionBar setTitle java
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • Cordova 地理定位不适用于 Android

    我想在 Android 上使用地理定位 我用 Apache Cordova 编写应用程序 地理定位在 android 电脑模拟器和 android 手机上均不起作用 I try http cordova apache org docs en
  • Locale.getDefault().getCountry() 返回空字符串

    我正在尝试使用国家 地区代码获取用户语言 例如en US es es 但是当我使用Locale getDefault getCountry 它返回空字符串 虽然它给了我正确的语言Locale getDefault getLanguage N
  • 当参数具有默认值时,为什么无法使用导航组件将参数传递给片段?

    我正在使用导航组件 但我不明白为什么如果定义了参数 则将参数传递给下面的方法时会出现错误 我正在使用 SafeArgs 只有当我为此参数定义默认值时才会出现此错误 有人可以解释一下为什么会发生这种情况以及如何解决它吗 这是导航图的部分代码
  • 在 Android 中使用 iText 读取或打开 PDF 文件

    我是 Android 应用程序开发新手 使用 iText 我完成了 PDF 创建并在创建的文件上写入 现在我想阅读该 PDF 文件 如何使用 iText 打开或阅读 PDF 文件 例子将是可观的 那么提前 哪个是渲染 PDF 文件的最佳库
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • Facebook LoginActivity 未正确显示

    我有一个使用 Facebook 登录的应用程序 我有 FacebookSDK 并且使用 com facebook LoginActivity 问题是 在 10 英寸平板电脑上 当显示软键盘时 活动无法正确显示 我使用的是 Samsung G
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • onTouchEvent()中如何区分移动和点击?

    在我的应用程序中 我需要处理移动和单击事件 一次点击是由一个 ACTION DOWN 操作 多个 ACTION MOVE 操作和一个 ACTION UP 操作组成的序列 理论上 如果您收到 ACTION DOWN 事件 然后收到 ACTIO
  • 无法在 Android 模拟器中安装 apk

    我正在尝试通过 adb shell 在 ICS 模拟器中安装 apk 从一个站点下载 但出现以下错误 失败 INSTALL FAILED UID CHANGED 可能是什么问题 只需 rm r 有问题的数据目录即可 如果您在安装时遇到此错误
  • 基于BluetoothChat示例通过蓝牙套接字发送文件

    大家好 根据我之前问的一个问题 我已经能够将文件转换为其他字节数组 以便使用以下写入方法 public void sendFile Log d TAG sending data InputStream inputStream null Ur
  • Android应用程序kill事件捕获

    我想在我的应用程序被终止时执行一些操作 可以使用哪种方法来实现此目的 我正在开发 Android 5 0 这个问题的关键在于 您必须了解您的申请是否可以收到任何 当您的应用程序在任何情况下被终止时的额外回调 下面的答案是由德文连线 http
  • 在 Android 中更新到 API 26 时,清单合并失败并出现多个错误

    我尝试使用 API 26 更新我的 gradle 安卓工作室2 3 3 但我在编译项目时遇到以下错误 这是我收到的错误的屏幕截图 应用级别build gradle Top level build file where you can add

随机推荐

  • 使用 R 进行荷兰语情感分析

    在 RStudio 中 我有一列包含Dutch我想通过情感分析添加 1 0 和 1 0 之间的极性分数的句子 我已经尝试过使用pattern nlp来自 jwfijffels 的软件包 但这对我不起作用 我找到了一个关于https gith
  • 如何使用 JQuery 使文本框在更改时启用和禁用

    我有一段 html 代码和脚本代码 我需要解决方案来处理一个文本框的更改事件 该事件禁用在另一个文本字段中输入数据的行为 任何人都可以帮我解决一下吗 div class leaf div
  • 如何连接到本地 cassandra 数据库

    我有一个本地运行的 cassandra 数据库 我可以在 Ops Center 中看到它正在运行 但是 当我打开开发中心并尝试连接时 我收到一个神秘的 无法连接 错误 如何获取通过开发中心连接到此本地 cassandra 数据库所需的确切名
  • Vagrant 和 Ansible 的“跳过:没有匹配的主机”问题

    我已经安装了 Vagrant VirtualBox 和 Ansible 并尝试在一台主机上运行配置 但它总是返回 正在跳过 没有匹配的主机 我的剧本文件的头部如下所示 hosts webservers user vagrant sudo y
  • 加速度计/陀螺仪数据的核心运动和频率的推送方法

    当使用推送方法获取加速度计 陀螺仪 设备运动数据时 不幸的是陀螺仪和设备运动最大频率平均不能超过72Hz 实际上数据也根本不是周期性的 更糟糕的是 如果只记录陀螺仪数据 不启动设备运动更新服务 即仅使用 motionManager star
  • 实体框架6和空间数据

    我有具有空间数据类型的数据库 我使用数据库优先模型和实体框架 6 0 2 和 NET 4 5 当我尝试使用生成的类时 出现以下错误 指定的架构无效 错误 未加载关系 Name FK1 因为类型 Model TypeB 不可用 以下信息可能有
  • 如果 Session 不是 Active Record 模型,如何处理 :session 错误?

    没有会话模型 除了显示一般失败通知之外 如何创建有关表单提交失败原因的特定错误 回想一下第 7 3 3 节 我们使用用户模型错误消息显示注册错误 这些错误与特定的 Active Record 对象相关 但此策略在这里不起作用 因为会话不是
  • 调整标签大小以适应文本数量 - Swift

    嘿 我有一个标签 我需要根据文本量使该标签的宽度更小或更大 我只找到了如何调整文本以适合大小 但找到了如何调整大小以适合文本 有任何想法吗 你会想要这样做 myLabel sizeToFit 正如这里所见 https developer a
  • FontMetrics 设置字体?

    我正在制作一个程序 需要在 FontMetrics 对象内设置 Font 我之前已经创建了 fontmetrics 但现在我无法再访问 Graphics 对象 然而 我想更改 FontMetrics 内的字体 即创建一个新的 FontMet
  • 检测移动设备和平板电脑设备

    我目前正在研究一些用于 PHP 检测手机的代码 这可能非常简单 现在我遇到了一个问题 我希望能够在我的 MVC 框架中为平板电脑 手机和网页制作独特的视图文件 所以我需要将平板电脑与其他移动设备分开 目前这是我正在使用的代码 public
  • 内存分配 char* 和 char[]

    这两者在内存分配方面有什么区别 char p1 hello char p2 hello 第一个创建了一个pointer变量 四个或八个字节的存储空间 具体取决于平台 并存储location那里有一个字符串文字 第二个创建一个array六个字
  • jQuery 里面的点击事件为

    我真的不知道我发生了什么事 代码如下 for var j 0 j
  • Android - 努力设计帐户选择器的样式

    我正在尝试在我的游戏中实现 AccountPicker 并且我尝试使用所有三个版本newChooseAccountIntent 2 来自AccountManager和一个来自AccountPicker 我的代码看起来像这样 if andro
  • PHP 中为什么有句点? [复制]

    这个问题在这里已经有答案了 可能的重复 如果在 php 字符串中间使用 句点 字符 是什么意思 https stackoverflow com questions 6104449 what does the period character
  • 将两个 byteBuffer 连接成一个

    您好 我有 2 个 byteBuffer 我想将它们连接在一起形成一个 byteBuffer 我在这里发现了类似的问题 但那里的建议都不适合我 你可以这样做 ByteBuffer b3 ByteBuffer allocate b1 limi
  • 什么时候删除 git 功能分支合适?

    我不想结束82 个特色分支悬挂在周围 https stackoverflow com questions 2353804 list git branches that can safely be deleted 所以我想知道将功能分支合并到
  • 如何用C/C++打开Chrome扩展程序中包含的文件?

    我正在尝试在 Chrome 扩展程序中打开一个要解析的文件 例如 config txt 通过 Javascript 这将相当容易 例如 chrome extension getURL config txt 会得到类似的东西chrome ex
  • 对 Intellij 产品中的控制台输出进行着色

    我有一个带有默认输出的自定义脚本 我想对错误 警告和信息进行着色 在 Intellij 产品 IDEA PhpStorm PyCharm 中有办法做到这一点吗 已经有一段时间了 但如果您仍然感兴趣 有一个用于控制台着色的新插件 与 Inte
  • 如何避免 IntelliTrace 事件中的 EF 查询被截断?

    我正在尝试调试实体框架查询 但是 当查询变得太大时 intelliTrace 中显示的查询会被截断 即使我将其复制并粘贴到记事本中 也仅显示查询的一部分 是否有任何解决方法可以获取 EF 生成的整个查询 提前致谢 已经有一段时间了 但它可能
  • 滚动时列表视图图像发生变化

    I am 解析 json数据在一个列表视图 图像视图和文本视图 首先四项列表视图的图像和文本视图正确添加但是当我滚动列表视图时 图像视图中的图像正在发生变化 这是我的代码 适配器 java public class Adapter exte