2014-02-19 84 views
1

正在創建不同的光標,以創建排序順序,並分發它在模型clases交替排序風格在android良好的做法列表視圖?在android中的光標創建排序順序的最佳方式?

titleCursor = context.getContentResolver().query(sourceUri, projection, 
       null, null, orderByTitle); 

timeCursor = context.getContentResolver().query(sourceUri, projection, 
       null, null, orderByTime); 

dateCursor = context.getContentResolver().query(sourceUri, projection, 
       null, null, orderByDate); 

和它的光標的值將分配給每個模型來獲取光標排序在listview中交替排序?這是一個好習慣嗎?

回答

1

您不必創建新的遊標。如果所有其他事情保持不變,您可以更改查詢的排序值。這就是爲什麼它是一個參數,所以你在執行查詢時改變它的值。

+0

如果我改變排序值的ListView也會刷新?在列表視圖已經顯示之後如何在運行時執行它? –

0

而不是創建每個種類不同的光標,你可以保持一個字符串值,或者一些整數值,基於內部的值,如果條件根本改變,如排序參數:

if(value.equals("time")) { 
    cursor = context.getContentResolver().query(sourceUri, projection, 
      null, null, orderByTime); 

}else if(value.equals("title")) { 
    cursor = context.getContentResolver().query(sourceUri, projection, 
      null, null, orderByTitle); 
} 

等。

+0

我的意思是在運行時,listview使用遊標並已經顯示之後,它是否改變遊標和listview刷新的順序? –

+0

最簡單的方法是重新運行查詢。這樣你就不必擔心自己重新排序數據。由於你使用數據庫做這件事,你會想使用newView和bindView而不是getView。 onClick進入bindView。如果你需要一個更廣泛的例子,讓我知道,明天我可以放一個。 Android框架是一個列表視圖由數組適配器提供服務的數據,在您的情況下,數組適配器是從數據庫提供的。這些框架已經到位,以便您可以更改數據表示,而不必擔心管道。 –

+0

啊我現在使用adapter.swapCursor()獲取它,並使用adapter.adapter.notifyDataSetChanged(),我現在有一個更大的神祕莫測,因爲在Android的一些api回到java即時恢復集合類,即時通訊仍然無法得到爲什麼一些其他程序員說POJO比在Android中使用光標好?即時通訊仍然困惑現在,如果Android支持像詢問爲什麼其他程序員說仍然使用java的方式像pojo像集合clases比使用android預定義的類? –

相關問題