私はExpandableListView
をデータベースからのデータで作成しています。そのために私はCursorTreeAdapter
を使用していて、データベースから取得するデータを含むCursor
オブジェクトでデータを設定します。ExpandableListViewは、子がないグループのインジケータを示しています
私は、デフォルトでは、子供がいないグループは「」は「拡張不可」と考えていたと考えています。
ただし、それでも行に展開アイコンが表示されます。クリックすると、何も実行されません。私はこのアイコンを表示したくありません。
子アイコンを持つグループに、展開アイコンを表示したいだけですが、これは起こっていません。すべての行(子を持ち、子がない行)の展開アイコンが表示されます。
UPDATE
私は私のコードを勉強していると私はこの問題は、グループのためにgroupIndicator
を設定する際に基本的であることを見てきました。しかし、私はこのように、描画可能な状態と拡張性に基づいているセレクタを作成し、それを設定するようなアプローチの多くを試してみた:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_empty="true"
android:state_expanded="false"
android:drawable="@android:color/transparent"/>
<item android:drawable="@drawable/expander_ic_maximized" />
</selector>
しかし、グループが折りたたまれたときには(理由は子供を持つものも含め、すべてのグループのために非表示になりますAndroidで認識された折り畳まれたグループを空にする)。
子どもがいるグループのインジケータのみを設定する方が良いでしょうか?
ここは私のコードです。
public class ContactsExpandableListAdapter extends CursorTreeAdapter
{
TextView mContactNameTextView, mContactNumberTextView;
Cursor mChildrenCursor = null;
public ContactsExpandableListAdapter(Cursor cursor, Context context)
{
super(cursor, context);
}
@Override
protected Cursor getChildrenCursor(Cursor cursor)
{
if(mContactId == -1)
mContactId = null;
return mController.getContactById(mContactId);
}
public int getChildrenCount(int groupPosition)
{
return mChildrenCursor.getCount();
}
@Override
protected View newGroupView(Context context, Cursor cursor, boolean paramBoolean, ViewGroup viewGroup)
{
View view = LayoutInflater.from(context).inflate(R.layout.filterbycontact, viewGroup, false);
mContactNameTextView = (TextView) view.findViewById(R.id.contact_name);
if(cursor.getString(cursor.getColumnIndex("contact_name")) == null) mContactNameTextView.setText(cursor.getString(cursor.getColumnIndex("contact_number")));
else
mContactNameTextView.setText(cursor.getString(cursor.getColumnIndex("contact_name")));
view.setTag(cursor.getString(cursor.getColumnIndex("contact_id")));
return view;
}
@Override
protected View newChildView(Context context, Cursor cursor, boolean paramBoolean, ViewGroup viewGroup)
{
View view = LayoutInflater.from(context).inflate(R.layout.filterbycontact, viewGroup, false);
if(cursor.getString(cursor.getColumnIndex("contact_name")) == null)
{
mContactNameTextView = (TextView) view.findViewById(R.id.contact_name);
mContactNameTextView.setText(cursor.getString(cursor.getColumnIndex("contact_number")));
}
else
{
mContactNumberTextView = (TextView) view.findViewById(R.id.contact_number);
mContactNumberTextView.setText(cursor.getString(cursor.getColumnIndex("contact_number")));
}
view.setTag(cursor.getString(cursor.getColumnIndex("contact_number")));
return view;
}
@Override
protected void bindGroupView(View view, Context paramContext, Cursor cursor, boolean paramBoolean)
{
mContactNameTextView = (TextView) view.findViewById(R.id.contact_name);
if(cursor.getString(cursor.getColumnIndex("contact_name")) == null)
mContactNameTextView.setText(cursor.getString(cursor.getColumnIndex("contact_number")));
else
mContactNameTextView.setText(cursor.getString(cursor.getColumnIndex("contact_name")));
view.setTag(cursor.getString(cursor.getColumnIndex("contact_id")));
}
@Override
protected void bindChildView(View view, Context context, Cursor cursor, boolean paramBoolean)
{
if(cursor.getString(cursor.getColumnIndex("contact_name")) == null)
{
mContactNameTextView = (TextView) view.findViewById(R.id.contact_name);
mContactNameTextView.setText(cursor.getString(cursor.getColumnIndex("contact_number")));
}
else
{
mContactNumberTextView = (TextView) view.findViewById(R.id.contact_number);
mContactNumberTextView.setText(cursor.getString(cursor.getColumnIndex("contact_number")));
}
}
}
voidメソッドでどのようにビューを返すのですか? hehehたぶん 'newGroupView()'メソッドで正しいはずですか?ところで、** viewHolder **と** indicator **は何ですか? – rogcg
申し訳ありません。返品は間違っていた。カーソルアダプタ内でビューを返す必要はありません。D。 ViewHolder(リスト内で物事をスピードアップするパターン)について:http://www.youtube.com/watch?v=wDBM6wVEO70&feature=player_detailpage#t=511s –
上記のリンクの上で彼はViewHolderについて話をしています。それから彼はhttp://www.youtube.com/watchでそれを説明しますか?v = wDBM6wVEO70&feature = player_detailpage#t = 511s –