我正在使用GDK在Glass上构建一个应用程序,该应用程序具有大量数据集供用户浏览。 (有一个语音输入组件,但我想有一个手动选择部分,因为语音不适用于每个数据点。)
我按照推荐的方式生成卡片,将带有一些文本的卡片推送到ArrayList,然后使用示例卡片适配器显示卡片。但是,在卡片之间滑动时,系统似乎很难生成许多卡片和滚动滞后。
此外,使用文档中的示例适配器,即使是一组带有文本和图像的六张卡片似乎也会滞后。
对于其他开发人员,您采取了哪些措施来优化数据集以防止任何潜在的延迟?
这是生成卡片的一些代码。我正在使用分页来显示少量卡片。 (最大 - 最小<= 50)。生成需要一些时间,因此系统不会给出任何正在发生的事情的指示。
public ArrayList<Card> getRange(int min, int max) {
ArrayList<Card> cardStack = new ArrayList<Card>();
Card prev = new Card(getApplicationContext());
prev.setText("Loading a lot of Pokemon... hang on");
setContentView(prev.toView());
try {
JSONArray wholedex = new JSONObject(loadJSONFromAsset()).getJSONArray("Data");
//Save time by only reading the items we want. There are ~760 items, so 40 more than regular dex number
for(int i=min-1;i<max+50;i++) {
if(i > wholedex.length())
continue;
try {
pkmn = new Pokemon(wholedex.getJSONObject(i));
if(pkmn.getPokedexnumber() == min)
browseMin = i;
if(pkmn.getPokedexnumber() >= min && pkmn.getPokedexnumber() <= max) {
Card temp = new Card(getApplicationContext());
temp.setText(pkmn.getPokedexnumber()+" "+pkmn.getName());
cardStack.add(temp);
}
} catch(Exception e) {
Log.d("Pokedex", e.getMessage());
}
}
return cardStack;
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}