メッセージログを表示するアクティビティを持つアプリケーションがあります。重要なのは、ユーザーがいくつかのメッセージを選択してから、いくつかのSMSメッセージを削除する場合と同じようにそれらを削除できるようにする必要があるということです。
それを行うための最良の方法はどれですか?詳細の追加:
これはメッセージのみのキャプチャです。

これが選択レイアウトのキャプチャです。

を表示するために彼らがどのようにそれを行うのか知りたいですCheckBoxes。彼らは2つのレイアウトを使用しましたか?
メッセージログを表示するアクティビティを持つアプリケーションがあります。重要なのは、ユーザーがいくつかのメッセージを選択してから、いくつかのSMSメッセージを削除する場合と同じようにそれらを削除できるようにする必要があるということです。
それを行うための最良の方法はどれですか?詳細の追加:
これはメッセージのみのキャプチャです。

これが選択レイアウトのキャプチャです。

を表示するために彼らがどのようにそれを行うのか知りたいですCheckBoxes。彼らは2つのレイアウトを使用しましたか?
listViewとアダプターを使用する場合、アダプターはメッセージの(純粋なJava)リストを保持していると思います。したがって、ユーザーがアイテムを削除するときは、リスト内のアイテムの場所に基づいて、リストからアイテムを削除します。
その直後にnotifyDataSetChanged、アダプタを呼び出します。それでおしまい 。
チェックボックスを表示する方法を知りたいのですが、2つのレイアウトを使用していますか?
2つのレイアウトファイルを使用しているとは思えません。行は非常に似ているため、表示を変更するだけでCheckBox、のないレイアウトからあるレイアウトに簡単に切り替えることができます。CheckBoxこれを行う方法は、行にの存在を示すフラグをアダプターに設定し、そのフラグに基づいて可視性をCheckBox更新することです。CheckBox
boolean checkStatus = false;
//...
public void getView(int position, View convertView, ViewGroup parent) {
//...
if (checkStatus) {
checkBox.setVisibility(View.VISIBLE); //show the CheckBox for each row
} else {
checkBox.setVisibility(View.GONE); // hide the CheckBox for each row
}
//...
}
次に、それらを表示するときCheckBoxes(Buttonクリック、メニュークリックなど)、checkStatusフラグを目的の値(現在の場合はそれ以外)trueに設定し、アダプターを呼び出す必要があります。CheckBoxesfalsenotifyDataSetChanged()
もちろん、2つのレイアウトを使用できます。1つはを含み、もう1つは含まCheckBoxないレイアウトです。ただし、一般的にListView、2つのレイアウトが非常に(または実質的に)異なる場合は、2つのレイアウトを使用します(これはあなたの場合ではありません)。2つのレイアウトを実装するには、メソッドgetItemViewTypeとを使用する必要がありgetViewTypeCountます。
boolean checkStatus = false;
public int getViewTypeCount() {
return 2; // you have two layouts
}
public int getItemViewType(int position) {
if (checkStatus) {
return 1;
} else {
return 0;
}
}
次に、あなたのgetView方法で:
public void getView(int position, View convertView, ViewGroup parent) {
int which = getItemViewType(position)
// make a switch statement and inflate the correct layout file
// based on the which variable if the convertView is null
// do stuff;
}
もちろん、表示するときは、フラグを再度CheckBoxes設定して、アダプターを呼び出す必要があります。checkStatusnotifyDataSetChanged()