2015-09-27 160 views
0

我有一個特殊的問題,我沒有找到答案。我無法處理這個問題。 那麼......有什麼辦法可以在ListView上動態地隱藏或顯示物品(圖片)?顯示/隱藏項目 - listview

我的意思是,在點擊工具欄上的菜單項名爲「編輯」後,ListView旁邊的文字應該會出現圖像。當用戶點擊此圖片時,應該從ListView和數據庫中刪除該文本。然後,點擊「完成」後,以前出現的圖像應該消失。

我花了整晚的時間,我還沒有找到答案,所以請大家幫幫我!

我有這樣的:

enter image description here

,點擊Edit後想這樣的:

enter image description here

這是我的適配器的部分(從BaseAdapter擴展)

public View getView(final int position, View convertView, final ViewGroup parent) { 
    if(convertView == null){ 
     convertView = inflater.inflate(R.layout.list, null); 
     TextView textView = (TextView) convertView.findViewById(R.id.textView); 
     textView.setText(todo.get(position)); 
     ImageView circleImage = (ImageView) convertView.findViewById(R.id.circleImage); 
     Picasso.with(mActivity).load(R.drawable.circle_image).transform(new CircleTransform()).into(circleImage); 
    } 
     if(editMode){ 
      circleImage.setVisibility(View.GONE); 
     } else circleImage.setVisibility(View.VISIBLE); 
    return convertView; 
} 

public void setMode(boolean editMode){ 
    this.editMode=editMode; 
    notifyDataSetChanged(); 
} 

onOptionItemSe lected從MainActivity:

else if(id == R.id.edit){ 
     mToDoFragment = new ToDOFragment(); 
     mFToDoFragment.setEditable(true); 
     invalidateOptionsMenu(); 
     return true; 
    } 

而且,最後一部分從ToDoFragment:

public void setEditable(boolean editable){ 
    mFavouritesListAdapter.setMode(editable); 
} 

在那之後,我得到這樣美麗的溫馨NullPointerException異常:(

java.lang.NullPointerException: Attempt to invoke virtual method 'void adapters.ToDoListAdapter.setMode(boolean)' on a null object reference 
+0

是的我可以幫助你,但讓我知道你已經開發了什麼。給我看一些東西。 –

+0

我的意思是這是可能的。只需要管理原始數據集,編輯和刪除選項就應用於數據集。數據集與您的列表綁定並在需要時適當調用notifiy數據集。 –

+0

@BhavdipPathar添加了兩張照片:) – Skye

回答

2

你好,請按照以下步驟打擊。我希望它能幫助你。

  1. 首先,你必須標誌指示例如當前模式在編輯模式或正常模式(視圖模式)

  2. 列表視圖定義模式之後。把你的模型或對象的數組列表。綁定你的數組列表BaseAdapter。我猜你正在使用ListView。如果您使用RecyclerView,那麼過程或邏輯將保持不變。

  3. getView(....)裏面。使用LayoutInflater 定義你的佈局在檢查convert-view不是null並且膨脹佈局之後。 把邏輯檢查模式的標誌。

  4. 檢查模式是編輯模式還是普通視圖模式。如果編輯,然後顯示每個行項目的[x]圖標,否則隱藏/走出圖像視圖。

  5. 如果在點擊[x]圖像視圖時編輯模式,請從與BaseAdapter綁定的數據集中移除模型或對象的位置。並致電notifyDatasetChanged()。這將刷新列表視圖並從列表視圖中刪除項目。

  6. 如果編輯模式完成,並且用戶從菜單項中單擊「完成」選項。然後簡單地將模式標誌從編輯更改爲完成模式。再次調用notifyDatasetChanged()BaseAdapter

方法就是這樣。如果您有任何疑問,請告訴我。

+0

你可以看看我的編輯帖子嗎? – Skye