gpt4 book ai didi

Blackberry - 具有不同 ID 的可点击 ListView

转载 作者:行者123 更新时间:2023-12-04 00:07:18 24 4
gpt4 key购买 nike

我在导航点击 ListView 时遇到了一些问题。当我在 for 循环中添加 add(myListView); 时,此循环一次又一次地在屏幕上添加记录,例如第一次添加第一条记录,第二次添加第一条记录和第二条记录。下面是代码:

for(int i=0;  i < totalfriends; i++){
imagearr = object.getJSONArray("pic_user_pro");
imgname = imagearr.getString(i);

if (imgname == "" || imgname == "null")
{
listThumb = getImage.getImageFromUrl("http://ugo.offroadstudios.com/wp-content/uploads/null.png"+connParams+"");
bmpResized = GPATools.ResizeTransparentBitmap(listThumb, 80, 80,
Bitmap.FILTER_LANCZOS, Bitmap.SCALE_TO_FIT);
}
else
{
listThumb = getImage.getImageFromUrl("http://ugo.offroadstudios.com/wp-content/uploads/"+imgname+""+connParams+"");
bmpResized = GPATools.ResizeTransparentBitmap(listThumb, 80, 80,
Bitmap.FILTER_LANCZOS, Bitmap.SCALE_TO_FIT);
}
listTitlearr = object.getJSONArray("nick_name");
listTitle = listTitlearr.getString(i);
friendidarr = object.getJSONArray("friends_user_id");
friendid = friendidarr.getString(i);
listDescarr = object.getJSONArray("interest");
listDesc = listDescarr.getString(i);
listDesc2arr = object.getJSONArray("location");
listDesc2 = listDesc2arr.getString(i);

v.addElement(new ListRander(bmpResized,listTitle ,listDesc,listDesc2, navBar));
// CustomListField With Event
final String nextGiftsId = friendid;
myListView = new CustomListField(v){
public boolean trackwheelClick(int status, int time)
{
UiApplication.getUiApplication().pushScreen(new ViewMoreHotlist(nextGiftsId));
return true;
}
};
add(myListView);
}// For Loop End

而且,如果我在 for 循环外添加 ListView 并在 for 循环外添加 add(myListView);,此循环会在屏幕上正确添加记录,但会获取 ID如果我点击第一条记录,每次都是最后一条记录。

我希望屏幕上的所有记录都正确显示,并且当我单击任何记录时它采用该记录的 ID 而不是其他记录。

最佳答案

您不想添加多个列表。您想要包含许多一个列表。 JSON 数据中的每条记录都应该是列表中的一行。

所以,你应该保留这段代码

myListView = new CustomListField(v){
public boolean trackwheelClick(int status, int time)
{
/* UiApplication.getUiApplication().pushScreen(new ViewMoreHotlist(nextGiftsId)); */
return true;
}
};
add(myListView);
for 循环的

外部。您应该只在 for 循环中添加 rows 。您在循环内执行此操作:

v.addElement(new ListRander(bmpResized,listTitle ,listDesc,listDesc2, navBar));

看起来不错。我看不到您如何定义和稍后使用 v,但列表需要以某种方式从 v 获取其数据。根据这条评论,听起来你已经做到了:

if i add ListView outside the for loop and i add add(myListView); outside for loop, this loop adds records on screen correctly

因此,您现在唯一的问题是,当您检测到列表点击时,您将获得最后一行的 ID。您需要将点击处理程序更改为如下内容:

myListView = new CustomListField(v){
public boolean trackwheelClick(int status, int time)
{
// which row is selected?
int index = getSelectedIndex();
String friendId = object.getJSONArray("friends_user_id").getString(index);
UiApplication.getUiApplication().pushScreen(new ViewMoreHotlist(friendId));
return true;
}
};

您需要确保在调用 trackwheelClick() 时保持 JSON 响应 object 可用。您可以使它成为您类中的成员变量……也许您已经这样做了。

解决您的问题的关键是在点击后使用 getSelectedIndex() 获取选定的索引。

关于Blackberry - 具有不同 ID 的可点击 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com