Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-如何在绝对位置获取ListView项?_Java_Android - Fatal编程技术网

Java Android-如何在绝对位置获取ListView项?

Java Android-如何在绝对位置获取ListView项?,java,android,Java,Android,因此,ListView适配器具有getView方法,每次更改ListView的显示时都会调用它。。。因此,第0个元素将成为视口中的第一个元素。我想 如何访问Listview中的第0个元素?不是视口中的第一个元素吗?整个ListView中的第一个元素?我想通过一个绝对索引访问元素,所以不管哪个元素是可见的,我想根据它们在ListView中的索引来访问它们 如何实现这一点?您无法按索引访问列表视图中的任何视图,因为它正在循环使用它们,而且基本上除了您看到的视图和一些缓存之外,没有其他视图 事实上你不

因此,ListView适配器具有getView方法,每次更改ListView的显示时都会调用它。。。因此,第0个元素将成为视口中的第一个元素。我想

如何访问Listview中的第0个元素?不是视口中的第一个元素吗?整个ListView中的第一个元素?我想通过一个绝对索引访问元素,所以不管哪个元素是可见的,我想根据它们在ListView中的索引来访问它们


如何实现这一点?

您无法按索引访问
列表视图中的任何
视图,因为它正在循环使用它们,而且基本上除了您看到的视图和一些缓存之外,没有其他视图

事实上你不应该这么做。如果要使用
列表视图
的数据进行操作,请通过
适配器
更改基础集合,以便在适配器的覆盖
getView()
中,您可以决定如何呈现特定视图(在您的情况下设置什么背景色)

所以你会有这样的东西:

private class Item {
     Color getBgColor {...}
}

private class MyAdapter extends BaseAdapter { // or WhateverAdapter you have
    Item getItem(int id) {...}

    public View getView(int position, View convertView, ViewGroup parent) {
        ...
        convertView.setBackgroundColor(getItem(position).getBgColor());
        return convertView;
    }
}

onListItemClick(ListView l、View v、int position、long id)完全按照您的要求执行。position参数是列表中的实际位置,而不是元素在屏幕上的位置。我想更改项目的背景色。我不希望这种情况在点击时发生。我希望它在填充列表时发生。有什么想法吗?您必须创建一个自定义适配器才能做到这一点。查找Listview自定义适配器。关于这方面有很多教程:)好的,我如何通过适配器更改项目的背景颜色?我真的不想发垃圾邮件问这个问题,我可以用其他方式与您联系吗?