GrivView 的 BaseAdapter 中的绝对位置

2024-03-06

我正在尝试写BaseAdapter to my GrivView but in

public View getView(int position, View convertView, ViewGroup parent) { ... }

the position渲染下一个元素时:

visible elements
---------------
|  1   2   3  |
|  4   5   6  | <--- screen
|  7   8   9  |
---------------

nonvisible elements
|  1   2   3  | <-- below visible area
|  4   5   6  |

其中实数是:

visible elements
---------------
|  1   2   3  |
|  4   5   6  | 
|  7   8   9  |
---------------

nonvisible elements
| 10  11  12  |
| 13  14  15  | 

我知道这是正确的行为(它只计算可见元素),但是如何获取列表中项目的真实位置?或者如何知道我应该返回哪个布局?

EDIT:然而,返回的数字比我显示的随机得多,即使在屏幕上也是如此。


Using BaseAdapter完全像谷歌文档 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html显示效果很好。

My problem was:

  • NOT使用ViewHolder

  • 或尝试在 viewHolder 中保存 id

我应该使用ViewHolder如下:

public View getView(int position, View convertView, ViewGroup parent) {
    // create holder
    ViewHolder holder; // check if layout exists

    if (convertView == null) { // if it's not recycled, initialize some

        LayoutInflater inflater = LayoutInflater.from(mContext);
        convertView = (LinearLayout) inflater.inflate(R.layout.card_prev,
                null);

        // Create layout elements
        ImageView image = (ImageView) convertView
                .findViewById(R.id.imageViewThumbnail);

        TextView desc = (TextView) convertView
                .findViewById(R.id.textViewDescription);


        // Place layout elements in holder
        holder = new ViewHolder();
        holder.id = position;
        holder.preview = image;
        holder.text = desc;

        convertView.setTag(holder);
    } else {
        // Get existing holder
        holder = (ViewHolder) convertView.getTag();
    }

    // Update layout here using layout elements from holder
    String imageName = "image_" + (position + 1);
    final int imageId = mContext.getResources().getIdentifier(imageName,
            "drawable", "com.myapp");

    holder.text.setText("" + (position+1));

    holder.preview.setImageResource(imageId);

    holder.preview.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent fullScreenIntent = new Intent(v.getContext(),
                    FullScreenImage.class);
            fullScreenIntent.putExtra("imageRes", imageId);

            MainMenuActivity.currentShownActivity
                    .startActivity(fullScreenIntent);

        }
    });

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

GrivView 的 BaseAdapter 中的绝对位置 的相关文章

随机推荐

  • 获取树枝模板文件中使用的所有变量[重复]

    这个问题在这里已经有答案了 是否可以获取树枝模板中使用的所有变量 例如 在模板上 ul for item in navigation li a href item caption a li endfor ul h1 My Webpage h
  • 从 Firefox 扩展设置 HTTP 标头

    如何在 Firefox 扩展中设置 HTTP 标头 我将做到这一点 以便这些仅在访问我的网站时发送 以便我可以检测插件是否已安装 如果安装了 则不会推广该插件 这是我发现的最紧凑的方法 Components classes mozilla
  • 我应该使用哪个移动开发开源框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的公司想开发一个移动应用程序 Web 应用程序 本机应用程序还是混合应用程序 他们其实不知道 在这种情况下 他们要求我对移动开发的开源框架 跨
  • 如何重置参数值以便代理可以再次请求参数?

    我创建了一个对话流代理和其中的多个意图 其中一种意图需要 2 个参数 账户和余额类型 然后 它发送 Webhook 请求 其中写入代码以检查数据库中是否存在帐号 如果是的话 它会获取余额并发回给用户 现在 如果帐号不存在 我必须要求用户再次
  • 使用 json4s 序列化和反序列化 scala 枚举或 case 对象

    假设我有一个枚举或密封的案例对象组 如下所示 sealed abstract class Status case object Complete extends Status case object Failed extends Statu
  • Oracle ORDER BY 中忽略与号 (&) 字符

    我正在 Oracle 中运行一个查询 该查询按可能包含带有 号的值的列排序 然而 排序算法似乎忽略了 符号 例如 select from select txt from dual union select P txt from dual u
  • 基于查询的触发器是原子的吗?

    我有一个带有序列号的表 此序列号将会更改 并且引用自动编号将不起作用 我担心触发器的值会发生冲突 如果两个事务同时读取 我已经对 3 个连接运行了模拟测试 每个连接约 100 万条记录 没有发生冲突 CREATE TABLE aut au
  • 如何将类实例分配给变量并在其他类中使用它

    我正在做一些 Python 的基本练习 在这里 我定义了 3 个类 现在 我需要在另一个类中传递第一个类的实例 并在最后一个类中使用它 我写了如下代码 defining first class class MobileInventory d
  • 如何检查 Activity 是否存在多个实例

    我一直在尝试自学 Android 并且刚刚了解到我一直在创建相同的多个实例Activity在我的代码中 从概念上讲 我知道它在那里 但是有没有我可以使用的工具 例如 DDMS see我创建了多个实例 这也将帮助我了解我的实验是否Intent
  • 在 ASP.NET 中设置电子商务 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是电子商务新手 我正在寻找一个关于为 ASP NET 设置休闲 ECom 或将其插入现有站点 的特殊指南 其中包含产品目录 购物车 商家
  • JavaScript,执行函数

    我有下一个功能 var hideAll function code return 我在另一个函数中像回调一样使用这个函数 当我像这样使用它时 function params hideAll 一切正常 但是当我使用时 function par
  • Angular 2 取消未经身份验证的路线导航

    我有一个应用程序 有 3 个链接 主页 登录 user sign in 和用户详细信息 user 当用户单击 主页 时 我的应用程序将公开显示内容 当用户单击 用户详细信息 时 我的应用程序将显示弹出登录窗口 如果用户取消登录弹出窗口 我的
  • 如何计算3组或更多组之间的SMD?

    我有兴趣通过一个分层变量计算成对标准化平均差 SMD 通常这是在两组之间计算 但是我们可以在 3 组或更多组中进行计算吗 附 我是 gtsummary 包的忠实粉丝 所以我尝试使用以下方法进行此分析示例 2 来自这个令人惊奇的包 http
  • elisp 警告“引用自由变量”

    我正在徘徊如何摆脱 elisp 警告 我的设置如下 我有 init el 文件设置 emacs root 变量 root of all emacs related stuff defvar emacs root if or eq syste
  • Amazon VPC n^2 -4 IP 地址? CIDR 块

    我正在为我的实例创建一个新的 AWS VPC 但是 我注意到 当我使用 CIDR 表示法创建 VPC 和公共子网时 AWS 指示我有 n 2 4 其中 n 是位数 可用 IP 地址 为什么是这样 据我了解 当n 2 2发生时 通常是去除位全
  • R 的时间差

    我有一些数据 如下所示 id time 1 2013 02 04 02 20 59 1 2013 02 04 02 21 05 1 2013 02 04 02 21 24 2 2013 02 04 02 21 26 2 2013 02 04
  • 403 禁止 Unity3D C#

    我一直在尝试从此链接获取信息 隐藏 这是我当前的代码 public static string newsLink HIDDEN public static readonly List
  • iOS 8 模拟器无法启动

    当我尝试在模拟器 iOS 8 0 上使用 Xcode 6 Beta 4 运行我的应用程序时 我总是收到此错误 无法启动 iOS 模拟器 其实我在这个网站上发现了一些类似的问题 我尝试了所有的答案 但仍然无法解决 我在 Xcode 6 Bet
  • 编写音频源过滤器以用作 Lync 麦克风

    我正在尝试编写一个 DirectShow 音频捕获过滤器 它可以被 Microsoft Lync 客户端识别为Microphone来源 这些是我已经采取的步骤 过滤器源自CSource 其输出引脚源自CSourceStream并实施IKsP
  • GrivView 的 BaseAdapter 中的绝对位置

    我正在尝试写BaseAdapter to my GrivView but in public View getView int position View convertView ViewGroup parent the position渲