2016-02-26 45 views
-1

我有一個應用程序,用戶呈現的項目列表,他們可以按喜歡或分享。當他們按像ImageButton的圖像被改變,因爲它應該但我記錄在onBindViewHolder的位置的輸出,它不同於我實際點擊的確切位置notifyItemChanged(pos)如何將正確的位置傳遞給onBindViewHolder?

這是在我的onCreateViewHolder做一些計算在這裏它輸出被點擊項目的正確位置

public void onHeartPress(View imgB,int pos) 
{ 
    Log.d("Postion",pos); 
    notifyItemChanged(pos) 
} 

然後我嘗試登錄的位置時通知

public void onBindViewHolder(final ViewHolder holder, int position) 
    { 
     Log.d("Postion",position); 
    } 

傳遞給onBindViewHolder的位置不正確,例如,如果在採購訂單中的項目sition 0被按下位置5和0將傳遞給onBindViewHolder不僅位置0

+0

有一個標題或者類似的東西?你的意思是不同於確切的位置? – Chol

+0

你可以添加一些代碼,以便我們找出問題所在? –

+0

好的,我會添加代碼 – yanozai

回答

0

位置0和5被調用的原因是因爲它是一個recyclerView。它回收你的觀點。如果您只想通知已檢查的視圖,則應該創建一個大小等於您所使用的適配器大小的布爾值數組。然後,您可以更改您的心臟按壓方法的價值

public void onHeartPress(View imgB,int pos) 
{ 
    Log.d("Postion",pos); 
    yourArray[pos] = true; 
    // if you want to change the others to false; 
    for(int i = 0; i < yourArray.length(); i++{ 
      if(i != pos){ 
      yourArray[pos] = false; 
      }} 
    notifyItemChanged(pos) 
} 

適配器

public void onBindViewHolder(final ViewHolder holder, int position) 
    { 
     if(yourArray[position]) 
     Log.d("Postion",position); 
    } 
相關問題