如何在android中向10行列表视图添加5个元素?

如何在android中向10行列表视图添加5个元素?,android,arrays,listview,Android,Arrays,Listview,我以前在PHP和js上工作,最近在android listview上工作 但是,我在为listview创建自定义适配器时遇到了一个问题 public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO if (arg1 == null) { arg1 = myInflater.inflate(R.layout.grid, arg2, false); }

我以前在PHP和js上工作,最近在android listview上工作 但是,我在为listview创建自定义适配器时遇到了一个问题

public View getView(int arg0, View arg1, ViewGroup arg2) {
        // TODO
        if (arg1 == null) {
            arg1 = myInflater.inflate(R.layout.grid, arg2, false);
        }
        TextView name = (TextView) arg1.findViewById(R.id.text1);
        TextView desc = (TextView) arg1.findViewById(R.id.text2);
        ImageView image = (ImageView) arg1.findViewById(R.id.image1);
        if (arg0 < images.length) {
            image.setImageResource(images[arg0]);
        }
        name.setText(names[arg0]);
        desc.setText(description[arg0]);
        return arg1;
    }
公共视图getView(int arg0、视图arg1、视图组arg2){ //待办事项 如果(arg1==null){ arg1=我的充气机充气(R.layout.grid,arg2,false); } TextView名称=(TextView)arg1.findViewById(R.id.text1); TextView desc=(TextView)arg1.findViewById(R.id.text2); ImageView image=(ImageView)arg1.findViewById(R.id.image1); if(arg0 问题是我有3个内容数组要传递到listview网格,对于前两个数组,有10个元素,最后一个只有5个元素。所以,对于最后一个,它是不受限制的。我添加了一个条件来检查它是否超过5,但是args0似乎没有根据行增加

if (arg0 < images.length) {
                image.setImageResource(images[arg0]);
            }
if(arg0
前五行和其他一些行也有图像设置,为什么会这样,如何解决这个问题?谢谢

怎么样

if (images[arg0] != null) image.setImageResource(images[arg0]);

?一般来说

由于要在列表中显示
数据
,请创建一个表示数据的对象

就像你在上面的评论中提到的:

public class ListEntry {
  String name = "";
  String gender = "";//use enum here perhaps -.-
  String photoUrl = null; //or use byte[] photo or whatever you've stored in your array before
  // write getters/setters for your members
}
然后可以使用一个数组
ListEntry[]
(或列表)访问所有数据。这样你就可以避开你的indexOutOfBoundsException

在线查找任何listadapter教程,例如

为什么前五个以上的条目都有图像?

Androids Adapters for ListView实现了一种缓存机制,以将新列表项(如行)的膨胀(性能/内存成本密集型)降至最低。因此,创建的行数与列表显示的行数相同(或稍多)。由于您仅在有图像的情况下设置图像,而从不从行中删除已设置的图像,因此会导致某些行重放它们不应该重放的图像。这些行是从以前的外滚动行缓存的

因此,添加如下内容

if (listItem.photo != null) {
  image.setImageResource(images[arg0]);
} else {
  image.setVisibility(View.GONE);
}
作为ListView及其缓存机制的参考,请参见

编辑有关Listadapter使用的信息

上面发布的
getView(..)
ListAdapter
实现中,预先扩展了
ArrayAdapter
。如果是这样,您的
T
现在应该声明
ListEntry
,并且您有任何一行代码声明

MyArrayAdapter myAdapter=new MyArrayAdapter()
或类似的东西

现在您有了一个列表项数组或列表,如
List myCollection=new ArrayList()
ListEntry[]listEntries=new ListEntry[10]
并使用

myAdapter.addAll(listEntries)

要在
getView(…)
中获取列表中的项目,可以使用:

ListEntry currentEntry=getItem(arg0)


并引用currentEntry的单个成员进行设置;-)

(1)如何使用阵列?您是否试图同时显示所有3个数据?还是一次一个?(2) 设置中的args0是对象的位置,那么它怎么会超出您传入的数组长度呢?谢谢您的回复。前两个数组是name和gender,最后一个数组是成员的photo,有10个member,但只有前5个member没有photonot working,仍然是java.lang.ArrayIndexOutOfBoundsException:length=5;index=5抱歉,我是新手,我已经创建了一个新的类ListEntry,如何设置ListEntry数组?@user782104编辑了我的答案以满足您的需要,希望有帮助,否则请邀请我聊天;-)对我已经创建了一个房间呼叫“asdasfsdgfdsgdfg”,你介意加入吗?谢谢你的解释