如何在android中向10行列表视图添加5个元素?
我以前在PHP和js上工作,最近在android listview上工作 但是,我在为listview创建自定义适配器时遇到了一个问题如何在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); }
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(arg0if (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”,你介意加入吗?谢谢你的解释