Best practice for emptying/resetting a tableView?

You must Login before you can answer or comment on any questions.

I have a question about some behind-the-scenes Titanium architecture. A common UI element in many of my apps is the tableView. I use tableViews a lot, and some of them get very long (hundreds of custom rows with many child objects and event listeners).

I was wondering what the best practice is for clearing out a table?

I have seen:

table.setData(); 
table.setData([]); 
table.data = [];
They all appear to behave similarly. Are they equivalent? Is there a method better than any of these three?

My biggest concern is with the release of event listeners. When I work with the DOM I love using jQuery. In the past I used element.html("") to empty out containers I wanted to reuse, until I learned that doing so does not release the event listeners and other jQuery data related with the child elements of the container. This results in a huge memory leak, so now I use element.empty().

Do methods like table.setData() release all of rows, their children, and their event listeners from memory? Or does it just overwrite the appearance of the table?

The tableView objects are a pivotal component of all the apps I make with Titanium, and I want to be sure I'm using them correctly. Cheers.

2 Answers

A few things to keep in mind... if each row only needs to accept one click aka the row... it is better to set the event listener to the table the each row. Also, the methods you posted would work just fine. It is worth noting however, that if you are not planing on reusing the table for a while it is probably better to null the table object and create a new one when needed... but thats a case by case thing. Also worth noting is when setting new data to a table, you do not need to set an empty value first, you can just set the new data...

Hope all that helps :)

— answered 2 years ago by Matt Apperson
answer permalink
1 Comment
  • Thank you for the help Matt. Some rows just need to be clicked, though many have various children that each need their own listeners. When I overwrite the existing tableView rows, are the children and event listeners cleaned up?

    — commented 2 years ago by Robert Reinhard

Your Answer

Think you can help? Login to answer this question!