2013-06-27 80 views
0

讓我試着讓我清楚地瞭解情況。 我有一個從XML文件中檢索到的標題列表,它隨機顯示在ViewPager的TextView中。Text.setText()在ViewPager的當前視圖中無法正確顯示

在使用setText在TextView中設置它之前,我已經打印了標題列表,以及使用System.out.println查看標題的隨機標題。

事情是,隨機化的標題沒有顯示在ViewPager的當前視圖中,它顯示在下一個視圖中,當我滑動時,同樣的事情繼續。在當前視圖中,顯示了不同的標題,與隨機標題不同。

我需要在當前視圖中正確顯示文本,因爲當用戶點擊它時,它應該打開一個頁面,並顯示視圖中顯示的文本。

任何人都知道我爲什麼面臨這個問題,我該如何解決它?

//Code Snippet is from a PagerAdapter 
    try{ 
    randomNo = getRandomNumber(nl.getLength()); 
    System.out.println("AMOUNT OF ARTICLES : " + nl.getLength()); 
    System.out.println("RANDOM NUMBER : " + randomNo); 

    showTitle = texts.get(randomNo); 
    showArticle = urls.get(randomNo); 

    System.out.println("RANDOM ARTICLE TITLE : " + showTitle); 
    text5.setText(showTitle); 
    } 

    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

UPDATE 我想通了,爲什麼文本沒有正確顯示。

示例中,view1顯示text1並加載文章1,view2顯示文本2並加載article2等。但是,由於它在第一次運行時加載所有文章鏈接和標題,因此會根據隨機序列。

標題1 標題2

鏈接1 鏈路2

因此,視圖1實際上得到鏈接2(最新隨機鏈接),但還是堅持了文本1。每次我刷卡時,它都會隨機化,導致標題和鏈接混亂。

找到一種方法可以根據項目要求來解決它。我在我的Fragment類而不是ViewPagerAdapter中運行隨機代碼,這樣它就會隨機加載一次代碼,這有助於在每個視圖中顯示相同的標題和鏈接。我從Fragment類中檢索標題並將其顯示在我的適配器中。這樣,每個視圖都顯示相同的標題和鏈接,直到下一次運行。

+1

你可以發表你的示例代碼嗎? –

+0

添加了代碼,我得到隨機標題並將其設置爲我的TextView。它在ViewPager中。每次它滑動,代碼都會運行。 –

+0

我的PagerAdapter中有超過2000行的代碼,我不允許顯示完整的代碼。讓我嘗試將這些部分提取出來。 –

回答

0

Viewpager緩存您的視圖以節省資源,因此當您滑動它時,如果距離遠離1頁左右,它最終會將其扔掉。所以你需要做的是通知viewpager,你需要更新。這是achived這個「黑客」:

覆蓋getItemPosition在PagerAdapter這樣的:

public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

然後每次隨機你的TextView你必須調用notifyDataSetChanged()在viewpager。

有關更多詳細信息,請參閱question

+0

感謝您的建議。我試過了,它刷新了視圖尋呼機。但對我而言並沒有幫助。我有點發現了我的情況以及解決問題的方法。如果我需要刷新我的viewpager,我會使用這個建議。 –

+0

最終,這個建議幫助我解決了另一個我ViewPager遇到的刷新視圖尋呼機問題。謝謝。 –