2017-04-05 24 views
0

おはよう!onItemLongClickはリストビューの表示アイテムを更新しません

onItemLongClickがリストビュー内のビュー項目を更新しない理由を知りたいのですが、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

更新後ビュー()。 – Rajasekhar

+0

あなたのコードはコンパイルされません。 –

+0

こんにちは、すべての私の謝罪私は返信文を追加することを忘れましたが、問題は未解決です。 – Kuro

答えて

1

trueを返す必要があります。したがって、アンドロイドはあなたのクリックが消費されたことを知ります。

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

正しいですが、私は、trueを返すことでAndroidがonItemClickイベントに煩わされることはなく、コード内のどこかでAndroidを実装する場合にのみ追加します。 –

+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内のitensのコールバックです。onLongClickListenerは、各項目に対して多くのコールバックを追加します。 –

+0

こんにちは、ご意見ありがとうございます。私はすでにすべてのビューをインスタンス化し、私の謝罪も聞いてきました。返信文をそこに追加するのを忘れましたが、まだ問題は解決されていません。 – Kuro

0

あなたはonItemLongClickリスナーの真値を返却する必要があります、これを試してください: -

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

これがあなたを助けてくれることを願っています。 :)

+0

あなたのフィードバックのおかげで、ありがとうございました。私は返信文を追加するのを忘れました。 – Kuro

関連する問題