Как загрузить ListView, используя SQLite в Titanium?
Я на самом деле использую фреймворк Alloy. Я пытался в моей модели.js это:
var myBooks = Alloy.Collections.books;
Var getData = myBooks.fetch();
Однако для настройки ListView требуется получить тип Array, и, если честно, я знаю только, что с переменной getData у меня есть объект типа Backbone.Object, и я не понимаю, как его отобразить.
Спасибо заранее за любую помощь.
2 ответа
Я нашел ответ, нет необходимости анализировать значение в массиве и вызывать строку:
$.elementsOnList.section[0].setItems(books);
Интеад из вас может просто:
//Get a reference to our collection:
Alloy.Collections.books.fetch();
И в представлении.js используют свойства, которые предлагает Titanium через его каркас Alloy:
<Alloy>
<Collection src="books" />
<Window>
<ListView defaultItemTemplate="by_name">
<Templates>
<ItemTemplate name="by_name">
<View>
<Label bindId="title"/>
</View>
</ItemTemplate>
</Templates>
<ListSection dataCollection="books">
<ListItem title:text="{title}" />
</ListSection>
</ListView>
</Window>
</Alloy>
И с этими несколькими строками кода мой список загружает данные из базы данных.
Это не написано для Alloy, но это код plug-and-play.
// Create main window
var win = Ti.UI.createWindow({
backgroundColor:"#bbb",
navBarHidden : true,
orientationModes : [Titanium.UI.PORTRAIT]
});
// Install the database
var db = Ti.Database.install("myDB.sqlite", "myDB");
db.close();
// Create the empty array
var myBooks = [];
// Set data in the app
function setData(){
var db = Ti.Database.open("myDB");
// Select the "books" table in the database
var rows = db.execute("SELECT * FROM books");
while (rows.isValidRow()) {
// Add each "title" under the books table to the array
myBooks.push(rows.fieldByName("title"));
rows.next();
}
rows.close();
db.close();
// Print the array
Ti.API.info(myBooks);
}
// call the function
setData();
win.open();
Я просто создал простую базу данных в sqlite с одной таблицей "книги", а затем "заголовки" по книгам. В "Книги" я добавил три значения: "Книга первая", "Книга вторая" и "Книга третья".
Отсюда вы сможете использовать массив myBooks для добавления в свой ListView в Alloy.