2017-04-05 50 views
0

美好的一天!onItemLongClick不會更新列表視圖中的查看項目

我想知道爲什麼onItemLongClick不會在ListView中更新視圖項目的原因,但是當我使用onItemClick它按預期工作時,這是我的代碼的片段。我很抱歉,我忘了在該片段中添加return語句,但問題仍未解決。

private void updateView(int position) { 
    View v = listView.getChildAt(position - 
      listView.getFirstVisiblePosition()); 

    ImageView tempImgView = (ImageView) v.findViewById(R.id.avatarIcon); 
    if (listView.isItemChecked(position)) { 
     tempImgView .setImageResource(R.drawable.ic_check_24dp); 
    } else { 
     tempImgView .setImageResource(R.drawable.ic_uncheck_24dp); 
    } 
} 


@Override 
public void onItemClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
     updateView(position); 
     return true; 
} 

@Override 
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
} 
+0

post updateView()。 – Rajasekhar

+0

你的代碼甚至不會編譯。 –

+0

嗨我所有的歉意,我忘了添加return語句,但問題仍未解決。 – Kuro

回答

1

您必須返回true,以便android會知道您的點擊已被使用。

@Override 
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
} 
+0

正確,我只補充一點,如果返回true,Android不會爲onItemClick事件而煩惱,以免他在代碼中實現它。 –

+0

你好,我的道歉忘了添加關於這個問題的回覆聲明,但仍然沒有解決問題。 – Kuro

-1

實例化後,您的項目視圖,設置:

yourItemView.setLongClickable(true); 
yourItemView.setOnLongClickListener(this); 

而且記得要加長擊事件回報:

@Override 
public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
} 
+0

OnItemLongClick是listView中的一個回調函數,onLongClickListener會爲每個項目添加很多回調函數。 –

+0

嗨,謝謝您的反饋。我已經實例化所有的意見和傾聽者也我的歉意,我忘了在那裏添加我的返回語句,但仍然是問題未解決 – Kuro

0

你將不得不返回onItemLongClick聽者的真正價值,試試這個: -

@Override 
    public boolean onItemLongClick(AdapterView<?> arg0, View view, int position, 
     long id) { 
    updateView(position); 
    return true; 
    } 

希望這會幫助你。 :)

+0

您好,謝謝您的反饋,但我的歉意,我忘了添加return語句,但問題仍未解決。 – Kuro

相關問題