8

SQLiteデータベースにバインドされたExpandableListViewがあります。簡単にするために、データベースに2つの列が含まれていると仮定します:titlebody。ExpandableListViewには、groupそれぞれtitleにaがありchild、対応するそれぞれにaがありbodyます。

ここで、さらに面白くするために、SQLiteデータベースの一部の行にはがありませんbody(つまり、...のみがありますtitle)。ご覧のとおり、本文がない場合は、グループを拡張する理由はありません...子は空(つまりString body == "")になるためです。

このような状況を捉え、グループの拡大をスキップする方法を探しています。空白の子を拡張したくありません。それを疑似コードに入れるには、次のようなものが必要です。

if (body.getText() == "") {
  //DO NOT EXPAND
  //DO OTHER STUFF
}

助言がありますか?

4

2 に答える 2

16

秘訣はOnGroupClickListenerにあります。次のコードは動作するはずです。ExpandableListActivityのonCreateメソッドの最後に配置します。

lv.setOnGroupClickListener(new OnGroupClickListener() {

  @Override
  public boolean onGroupClick(ExpandableListView parent, View v,
      int groupPosition, long id) {

    Cursor c = mDbHelper.fetchRow(id); //Get Title & body from SQLite table
    if (c.getString(Constants.bodyColumn).equals("")) {
      //If the body returned from SQLite is empty, return true
      return true; //True means the click HAS been handled.
    }
    return false; //Click has not been handled, so let Android expand here.
  }
});
于 2010-08-12T13:08:54.207 に答える
0

これは非常にシンプルで簡単な方法で行うことができます

expListView.setEnabled(false);

それを無効にしたいときはいつでも、そしてあなたが待っているあなたのタスクが完了したとき、あなたは電話をすることができます

expListView.setEnabled(true);
于 2016-04-08T15:10:47.343 に答える