0

メッセージログを表示するアクティビティを持つアプリケーションがあります。重要なのは、ユーザーがいくつかのメッセージを選択してから、いくつかのSMSメッセージを削除する場合と同じようにそれらを削除できるようにする必要があるということです。

それを行うための最良の方法はどれですか?詳細の追加:

これはメッセージのみのキャプチャです。

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

を表示するために彼らがどのようにそれを行うのか知りたいですCheckBoxes。彼らは2つのレイアウトを使用しましたか?

4

2 に答える 2

0

listViewとアダプターを使用する場合、アダプターはメッセージの(純粋なJava)リストを保持していると思います。したがって、ユーザーがアイテムを削除するときは、リスト内のアイテムの場所に基づいて、リストからアイテムを削除します。

その直後にnotifyDataSetChanged、アダプタを呼び出します。それでおしまい 。

于 2012-06-16T20:24:04.813 に答える
0

チェックボックスを表示する方法を知りたいのですが、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
     }
     //...
}

次に、それらを表示するときCheckBoxesButtonクリック、メニュークリックなど)、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()

于 2012-06-17T06:22:54.713 に答える