我在ListView
的ListView
的頂部出現一些新項目時遇到一些困難。但是,當新項目添加到ListView
時,我希望當前項目保持可見狀態並在其上面添加新項目。在ListView頂部添加新項目無法正常工作。將項目添加到底部而不是
爲此,我遵循了這裏的解決方案:https://stackoverflow.com/a/3035521/450534,並且當這種方法不起作用時,我開始嘗試一些。
另外值得一提的是,我正在使用Chris Banes的Pull to Refresh庫。
現在好奇的是,當我在ListView
的最後一項下面添加paged
數據時,一切正常。但我難以理解爲什麼新商品不會放在當前商品上方並保持當前位置。這是我迄今所做的(在onPostExecute()
):
// GET THE CURRENT LISTVIEW POSITION (USED TO MAINTAIN SCROLL POSITION)
int currentPosition = actualListView.getFirstVisiblePosition();
Log.e("POSITION", String.valueOf(currentPosition));
View v = actualListView.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
Log.e("TOP", String.valueOf(top));
/***** APPEND NEW DATA TO THE ADAPTER AND THE LISTVIEW *****/
// CAST THE ADAPTER (AGAIN)
adapter = new NewsFeedAdapter(getActivity(), arrFeeds);
// SET THE ADAPTER TO THE LISTVIEW
actualListView.setAdapter(adapter);
// SET THE SCROLL POSITION
actualListView.setSelectionFromTop(currentPosition, top);
lv.onRefreshComplete();
這是ListView
的開始,這是我應該仍然在頂部(高於此),增加新的項目後可以看到。我計劃展示一個小布局,顯示有多少新的Feed在上面。現在就像Facebook應用程序一樣。
但是新項目被添加到ListView
的底部,而不是在上述現有項目上。
有什麼明顯的是我錯過了什麼?如果您需要我添加更多代碼,請告訴我,我會立即添加它。
感謝您的快速回復。我也嘗試過這種方法。這個問題(我懷疑)是我在'doInBackground()'中的'for loop'中獲取所有數據。此代碼是從Facebook API獲取新聞源。如果要說的項目數量是常數1,那麼我認爲你的建議可能有效。我認爲至少是這樣。 – SSL 2013-03-17 09:48:11
即使您嘗試在Asynctask的doInBackground中獲取數據,您仍然會將適配器設置爲該列表,並且該適配器將持有一些自定義對象列表? – 2013-03-17 09:53:55
如果你的意思是POJO,那麼是的。我有一個用於'ArrayList'的。這個類被稱爲'NewsfeedData'。你是否想要我添加'doInBackground()'的一部分? – SSL 2013-03-17 09:55:34