ListView内にExpandableListViewを配置して、グループレベルの最初の子アイテムを作成して、子アイテムを作成することができます。 ExpandableListViewのみがグループと子です。リストビュー内にExpandableListViewを配置したいと思います。 オープンソースのTreeViewを試しましたが、特にExpandableListViewのすべての機能を取得できませんでした。 あなたの返事を楽しみにしています。ありがとう。 Expandable ListViewをListViewの内部に配置する
0
A
答えて
2
ExpandableListView自体は、あなたが... ListViewコントロール内
0
をExpandableListViewを使用することはできません。しかし、あなたがリストビューなしで同じの機能の必要性を達成することができ、リストビューです。ここには同じコードがあります。 activtyから呼び出すことが
public class ExpandableListAdapter extends BaseExpandableListAdapter {
/**
* Holds the mapping details
*/
Mapdetail mMapDetials = new Mapdetail();
/**
* Holds the contest
*/
private Context mContext;
/**
* Holds tehe xpandable list VIew
*/
private ExpandableListView mExpandableListView;
/**
* Holds the details for the cards
*/
private List<com.sourcebits.sfc.activity.GroupEntity> mGroupCollection;
/**
* Holds the status whether its expanded or not
*/
private int[] groupStatus;
public ExpandableListAdapter(Context pContext,
ExpandableListView pExpandableListView,
List<com.sourcebits.sfc.activity.GroupEntity> mGroupCollection2) {
mContext = pContext;
mGroupCollection = mGroupCollection2;
mExpandableListView = pExpandableListView;
groupStatus = new int[mGroupCollection.size()];
setListEvent();
}
/**
* Sets the event listeners
*/
private void setListEvent() {
mExpandableListView
.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int arg0) {
groupStatus[arg0] = 1;
}
});
mExpandableListView
.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int arg0) {
groupStatus[arg0] = 0;
}
});
}
@Override
public String getChild(int arg0, int arg1) {
return mGroupCollection.get(arg0).GroupItemCollection.get(arg1).Name;
}
@Override
public long getChildId(int arg0, int arg1) {
return 0;
}
@Override
public View getChildView(final int arg0, final int arg1, boolean arg2,
View arg3, ViewGroup arg4) {
ChildHolder childHolder;
if (arg3 == null) {
arg3 = LayoutInflater.from(mContext).inflate(
R.layout.list_group_item, null);
childHolder = new ChildHolder();
childHolder.title = (TextView) arg3.findViewById(R.id.item_title);
childHolder.background = (ImageView) arg3
.findViewById(R.id.background);
arg3.setTag(childHolder);
} else {
childHolder = (ChildHolder) arg3.getTag();
}
if (arg1 == 0) {
childHolder.background.setBackgroundResource(R.drawable.list_top);
} else {
childHolder.background
.setBackgroundResource(R.drawable.list_bottom);
}
childHolder.title.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mMapDetials.setmLanguageIndex(mGroupCollection.get(arg0).GroupItemCollection
.get(arg1).Name);
startNextActivity();
}
});
childHolder.title
.setText(mGroupCollection.get(arg0).GroupItemCollection
.get(arg1).Name);
return arg3;
}
@Override
public int getChildrenCount(int arg0) {
return mGroupCollection.get(arg0).GroupItemCollection.size();
}
@Override
public Object getGroup(int arg0) {
return mGroupCollection.get(arg0);
}
@Override
public int getGroupCount() {
return mGroupCollection.size();
}
@Override
public long getGroupId(int arg0) {
return arg0;
}
@Override
public View getGroupView(final int arg0, boolean arg1, View arg2,
ViewGroup arg3) {
GroupHolder groupHolder;
if (arg2 == null) {
arg2 = LayoutInflater.from(mContext).inflate(R.layout.list_group,
null);
groupHolder = new GroupHolder();
groupHolder.img = (ImageView) arg2.findViewById(R.id.tag_img);
groupHolder.title = (TextView) arg2.findViewById(R.id.group_title);
arg2.setTag(groupHolder);
} else {
groupHolder = (GroupHolder) arg2.getTag();
}
if (groupStatus[arg0] == 0) {
groupHolder.img.setImageResource(R.drawable.icon_expand);
} else {
mMapDetials.setTrainingPointIndex(mGroupCollection.get(arg0).Name);
groupHolder.img.setImageResource(R.drawable.icon_collapse);
}
groupHolder.img.setTag("NotClicked");
if (mGroupCollection.get(arg0).GroupItemCollection.size() == 0) {
groupHolder.img.setImageResource(R.drawable.arrow);
mMapDetials.setmLanguageIndex("English");
groupHolder.img.setTag("Clicked");
groupHolder.img.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getTag().toString().equals("Clicked")) {
mMapDetials.setTrainingPointIndex(mGroupCollection
.get(arg0).Name);
startNextActivity();
return false;
}
return false;
}
});
}
groupHolder.title.setText(mGroupCollection.get(arg0).Name);
return arg2;
}
/**
* Holds the view of the parent
*
* @author Gautam Balasubramanian
*
*/
class GroupHolder {
ImageView img;
TextView title;
}
/**
* ChildHolder class view of the child view
*
* @author Gautam Balasubramanian
*
*/
class ChildHolder {
TextView title;
ImageView background;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
return true;
}
void startNextActivity() {
Intent intent = new Intent(mContext, GeneralInfo.class);
mMapDetials.toString();
Bundle extras = new Bundle();
extras.putSerializable("values", mMapDetials);
intent.putExtras(extras);
mContext.startActivity(intent);
}
}
コード:
ExpandableListViewアダプターコード値の
private void initPage() {
mExpandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
mExpandableListView.setCacheColorHint(0);
ExpandableListAdapterforProducts adapter = new ExpandableListAdapterforProducts(
Products.this, mExpandableListView, mGroupCollection);
mExpandableListView.setAdapter(adapter);
ColorDrawable sage = new ColorDrawable(this.getResources().getColor(
R.color.sage));
mExpandableListView.setDivider(sage);
mExpandableListView.setDividerHeight(1);
}
Initailisation、
mySQLiteAdapter = new SqliteAdapterForProducts(this);
mySQLiteAdapter.openToRead();
mCursor = mySQLiteAdapter.queueProducts();
Log.v("", mCursor.getCount() + "is the count");
mCursor.moveToFirst();
mGroupCollection = new ArrayList<GroupEntity>();
for (int i = 0; i < mCursor.getCount(); i++) {
GroupEntity groupEntity = new GroupEntity();
groupEntity.Name = mCursor.getString(1) + " "
+ mCursor.getString(2);
String languages[] = mCursor.getString(3).toString().split(",");
if (languages.length > 1) {
for (int j = 0; j < languages.length; j++) {
GroupItemEntity groupItemEntity = groupEntity.new GroupItemEntity();
groupItemEntity.Name = languages[j];
groupEntity.GroupItemCollection.add(groupItemEntity);
}
}
mCursor.moveToNext();
mGroupCollection.add(groupEntity);
}
mCursor.close();
mySQLiteAdapter.close();
上記のものは私のために働きました。あなたはそれを試すことができます。
関連する問題
- 1. Expandable ListView
- 2. expandable listview design
- 3. Expandable Listview with EditText
- 4. Android Search Expandable ListView
- 5. Android expandable listview
- 6. Expandable ListView/Checkbox Woes
- 7. Expandable Listview OnClickListeners
- 8. expandable listView子を持つ例listView
- 9. Android Expandable ListView with EditText
- 10. ListViewを別のListViewに配置する方法...?
- 11. Expandable ListViewで子から値を取得
- 12. WPF ListView列ヘッダーの配置
- 13. ListViewをNestedScrollView内に配置するには
- 14. ListView内部ViewPager - ListViewの項目は空白にします
- 15. Expandable ListViewは展開されません
- 16. Expandable Listviewから特定の子供を取得するには?
- 17. パックされた位置とフラットな位置の違いandroid expandable listview
- 18. RecyclerviewでExpandable ListViewを使用するには?
- 19. Expandable ListViewのデフォルトのアイコンを変更する
- 20. Expandable Listviewから値を取得する方法
- 21. Expandable ListView年/月単位で項目をグループ化する
- 22. Expandable ListViewでEditTextからテキストを取得する方法
- 23. ListView内部のScrollViewスクロールの改善
- 24. Expandable ListViewの最初のグループのビューのハンドルを取得
- 25. NestedScrollViewの内部でスクロールしないListView
- 26. 方向:フラグメント内にあるListViewの位置を復元する
- 27. カスタムアダプタを使用したExpandable ListViewの実装
- 28. listview内のimagebutton
- 29. ListView内のアニメーション
- 30. LIstView内のToggleButton
**拡張可能なリストビュー自体は、特定のアイテムを持つリストビュー**がクリックするたびに展開されるため、リストビュー内で展開可能なリストビューを希望するという条件に同意しません。 –
最初にExpandableListViewのすべてのアイテムを折りたたんで作成し、ユーザーが[onChildClickListener](http://developer.android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html)でクリックするたびに展開します。 –
私が言っていることをこの例で確認してください:http://coderzheaven.com/2011/04/expandable-listview-in-android-using-simpleexpandablelistadapter-a-simple-example/ –