gpt4 book ai didi

javascript - 访问 TableView 的自定义行

转载 作者:行者123 更新时间:2023-11-30 17:57:58 25 4
gpt4 key购买 nike

我将项目推送到数据数组,然后将它们添加到 rowData 数组,以便为​​表格创建自定义行。当用户单击特定行时,我需要知道如何访问这些。当我有一个基本表时,我以前使用 e.rowData、title 等来访问这些元素,但现在它是一个自定义表,这是行不通的。不用担心解析位,一切正常。感谢所有帮助!

data.push({

title: items.item(i).getElementsByTagName("title").item(0).text,
leftImage: str.match(patt1) !== null ? str.match(patt1)[0] : 'image_news.png',
dataToPass: items.item(i).getElementsByTagName("description").item(0).text,
hasChild: true,
js:"external.js"
});



}

var rowData=[];

for(i=0;i<data.length;i++){
var img= Titanium.UI.createImageView({
image:data[i].leftImage,
left:0,
bottom:5,
height: 100,
width: 100
});

var bgBar=Titanium.UI.createView({
height:110,
width: "100%",
bottom:0,
left:0,
backgroundColour: "#000",
opacity: 0.6
});

var title=Titanium.UI.createLabel({
text:data[i].title,
color: 'black',
left: 105
});

var row=Titanium.UI.createTableViewRow({
height: "auto",
hasChild: "true",
js:"external.js",
dataToPass: data[i].dataToPass
});

row.add(img);
row.add(bgBar);
row.add(title);



rowData.push(row);
console.log("row shiznick" + rowData);
}


tableView.setData(rowData);


tableView.addEventListener("click", function (e){
console.log("HERE SOURCE.TITLE ------------------"+e.row.title);
console.log("YOYOOYOYO------------"+e.source.title);
console.log("IS THIS IT---------------"+e.children[0]);
console.log("HERE IS THE SOURCE -----------------------------"+ e.source);
console.log("HERE SOURCE.LEFTIMAGE REG EXP3 ------------------"+e.row.leftImage);
console.log("HERE SOURCE.ClassName ------------------"+e.source.className);
console.log("HERE HASCHILD ------------------"+e.rowData.hasChild);
console.log("HERE DATATOPASS ------------------"+e.row.dataToPass);
});

最佳答案

设置表格行的方式有两种,可以创建自定义行,也可以创建具有行对象属性的JSON对象。这两种情况都有不同的访问行的方式,要么是 row 对象,要么是 rowData 对象,from the docs :

When the row is created implicitly using a JavaScript dictionary object, use [the rowData property] rather than row to access any custom row properties. Here's an example of creating a row implicitly, which is not the recommended way.

在您的示例中,由于您没有隐式地创建行对象,而是显式地创建行对象,因此您可以从事件的 row 属性访问被单击的行,如下所示:

tableView.addEventListener("click", function(e){
// Get the [TableViewRow](http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableViewRow) object
var theRow = e.row;
// Get the children
var rowChildren = theRow.children;
// Here are your objects in the row
var imgInRow = rowChildren[0];
var bgBarInRow = rowChildren[1];
var titleInRow = rowChildren[2];
// Here is the title
var rowTitle = titleInRow.text;
});

或者,在这两种情况下,您始终可以使用索引来查找行对象,如下所示:

tableView.addEventListener("click", function(e){
// Get the index of the row
var ndx = e.index;
// Get the row, this only works if you have not added sections
var row = tableView.data[ndx];
});

关于javascript - 访问 TableView 的自定义行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17727510/

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