2014-11-04 102 views
0

內後,我有一個ImageButton一個列表視圖的孩子裏面,像這樣:的Android得POJO按鈕被點擊列表視圖項

<ImageButton 
     android:id="@+id/pick_up_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="@dimen/feed_item_padding_left_right" 
     android:background="@null" 
     android:onClick="pickUpDropOff"/> 

調用pickUpOrDropOff方法是這樣的:

public void pickUpDropOff(View view) { 

     ImageButton buttonToChange = (ImageButton) view.findViewById(R.id.pick_up_button); 

     if (buttonToChange.getTag(R.bool.PICKED_UP_TAG).toString() == "false") { 
      buttonToChange.setImageResource(R.drawable.triangle_full); 
      buttonToChange.setTag(R.bool.PICKED_UP_TAG, "true"); 
      ListItem itemToChange = parent 
     } 

     else if (buttonToChange.getTag(R.bool.PICKED_UP_TAG).toString() == "true") { 
      buttonToChange.setImageResource(R.drawable.triangle_empty); 
      buttonToChange.setTag(R.bool.PICKED_UP_TAG, "false"); 
     } 

// do some other stuff 
} 

這確實做改變圖像資源,但是當視圖被回收時,圖像資源的改變不會持續,因爲我的POJO對pickedUp的屬性沒有改變。在這種情況下,如何獲取POJO以更改屬性?

+1

您可以創建一個變量來控制圖像資源(數組)並重寫列表適配器的getView()方法來處理列表的行。 – 2014-11-04 03:05:00

+0

只是改變pojo的屬性不是更簡單嗎? – settheline 2014-11-04 05:30:37

回答

0

我整理出來之後。

要獲取POJO的按鈕點擊,在像這樣的物體位置的適配器設置標籤:

pickUpButton.setTag(R.integer.LIST_ITEM_POSITION, position); 

然後單擊該按鈕時,我改變底層POJO像這樣(我的模型是ShoppingListItem):

ImageButton buttonToChange = (ImageButton) view.findViewById(R.id.pick_up_button); 

if (buttonToChange.getTag(R.bool.PICKED_UP_TAG).toString() == "false") { 
    buttonToChange.setImageResource(R.drawable.triangle_full); 
    int myPosition = (Integer) buttonToChange.getTag(R.integer.LIST_ITEM_POSITION); 
    ShoppingListItem itemToChange = shoppingListItems.get(myPosition); 
    itemToChange.setPickedUp(true); 
} 

else if (buttonToChange.getTag(R.bool.PICKED_UP_TAG).toString() == "true") { 
    buttonToChange.setImageResource(R.drawable.triangle_empty); 
    int myPosition = (Integer) buttonToChange.getTag(R.integer.LIST_ITEM_POSITION); 
    ShoppingListItem itemToChange = shoppingListItems.get(myPosition); 
    itemToChange.setPickedUp(false); 
} 

listAdapter.notifyDataSetChanged(); 

這將停止非持久化數據的問題與回收列表視圖。對我而言,沒有本地數據存儲(全部通過JSON API進出)。如果您的應用需要更改數據庫,請務必保留更改。

0

只需調用列表視圖適配器上的notifydatasetchange()你改變你的POJO數據源這樣

adapter.notifyDataSetChanged();

+0

是的,我知道如何使用'notifyDataSetChanged()',但我沒有改變數據集。這就是我的問題所要求的 - 如何更改被點擊的按鈕的相應pojo的屬性。你讀過這個問題了嗎? – settheline 2014-11-04 05:29:33

相關問題