Mon code ci-dessous montre que l'un des parents pièce enfant qui est cliqué d'abord sur tout autre élément parent pour expandableListview
il ne montre que l'un des parents pièce enfant qui est cliqué d'abord sur tout autre élément parent pour expandableListview
public class AffiliationAdapter extends BaseExpandableListAdapter {
Context context;
LayoutInflater inflater;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private ArrayList<HashMap<String, String>> _listDataChild;
DbFields dbFields = new DbFields();
public AffiliationAdapter(Context activity, List<String> listDataHeader, ArrayList<HashMap<String, String>> listDataChild) {
this.context = activity;
this._listDataHeader = listDataHeader;
this._listDataChild = listDataChild;
}
@Override
public void registerDataSetObserver(DataSetObserver dataSetObserver) {
}
@Override
public void unregisterDataSetObserver(DataSetObserver dataSetObserver) {
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(groupPosition).get(childPosititon);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
if (view == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = infalInflater.inflate(R.layout.faq_group_expand, null);
}
TextView getFaqAnswer = (TextView) view.findViewById(R.id.answer);
getFaqAnswer.setTypeface(null, Typeface.BOLD);
getFaqAnswer.setText((_listDataHeader.get(i)));
return view;
}
@Override
public int getChildType(int groupPosition, int childPosition)
{
int result = 0;
if (groupPosition == getGroupCount()-1)//logical fail ?
{
result = 1;
}
return result;
}
@Override
public View getChildView(final int i, int i2, boolean b, View v, ViewGroup viewGroup) {
if (v==null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.child_affiliation, null);
int itemType = getChildType(i, i2);
LinearLayout layout_about = (LinearLayout) v.findViewById(R.id.layout_about);
LinearLayout layout_vc = (LinearLayout) v.findViewById(R.id.layout_vc);
LinearLayout layout_registrar = (LinearLayout) v.findViewById(R.id.layout_registrar);
LinearLayout layout_examination_controller = (LinearLayout) v.findViewById(R.id.layout_examination_controller);
LinearLayout layout_link = (LinearLayout) v.findViewById(R.id.layout_link);
TextView about_detail = (TextView) v.findViewById(R.id.about_detail);
TextView vc_name = (TextView) v.findViewById(R.id.vc_name);
TextView vc_Contact = (TextView) v.findViewById(R.id.vc_Contact);
TextView vc_email = (TextView) v.findViewById(R.id.vc_email);
TextView registrar_name = (TextView) v.findViewById(R.id.registrar_name);
TextView registarar_Contact = (TextView) v.findViewById(R.id.registarar_Contact);
TextView registrar_email = (TextView) v.findViewById(R.id.registrar_email);
TextView controller_name = (TextView) v.findViewById(R.id.controller_name);
TextView controller_Contact = (TextView) v.findViewById(R.id.controller_Contact);
TextView controller_email = (TextView) v.findViewById(R.id.controller_email);
TextView link = (TextView) v.findViewById(R.id.link);
about_detail.setText(_listDataChild.get(i2).get(dbFields.AFFILIATION_DESCRIPTION));
vc_name.setText(_listDataChild.get(i2).get(dbFields.VC_NAME));
vc_Contact.setText(_listDataChild.get(i2).get(dbFields.VC_PHONE));
vc_email.setText(_listDataChild.get(i2).get(dbFields.VC_EMAIL));
registrar_name.setText(_listDataChild.get(i2).get(dbFields.REGISTRAR_NAME));
registarar_Contact.setText(_listDataChild.get(i2).get(dbFields.REGISTRAR_PHONE));
registrar_email.setText(_listDataChild.get(i2).get(dbFields.REGISTRAR_EMAIL));
controller_name.setText(_listDataChild.get(i2).get(dbFields.EXAM_CONTROLLER_NAME));
controller_Contact.setText(_listDataChild.get(i2).get(dbFields.EXAM_CONTROLLER_PHONE));
controller_email.setText(_listDataChild.get(i2).get(dbFields.EXAM_CONTROLLER_EMAIL));
link.setText("Notice Link :" +_listDataChild.get(i2).get(dbFields.AFFILIATION_NOTICE_LINK)+
"\n Result Link : "+_listDataChild.get(i2).get(dbFields.AFFILIATION_RESULT_LINK)+
" \n Schedule Link :"+_listDataChild.get(i2).get(dbFields.AFFILIATION_SCHEDULE_LINK));
int grup_pos = (int) getGroupId(i);
switch (grup_pos) {
case 0:
layout_link.setVisibility(View.GONE);
layout_examination_controller.setVisibility(View.GONE);
layout_registrar.setVisibility(View.GONE);
layout_vc.setVisibility(View.GONE);
layout_about.setVisibility(View.VISIBLE);
// v = inflater.inflate(R.layout.dialog_contact, null);
Toast.makeText(context.getApplicationContext(), "position is" + grup_pos, Toast.LENGTH_SHORT).show();
break;
case 1:
layout_link.setVisibility(View.GONE);
layout_examination_controller.setVisibility(View.GONE);
layout_registrar.setVisibility(View.GONE);
layout_vc.setVisibility(View.VISIBLE);
layout_about.setVisibility(View.GONE);
// v = inflater.inflate(R.layout.item_faq_answer, null);
Toast.makeText(context.getApplicationContext(), "position is" + grup_pos, Toast.LENGTH_SHORT).show();
break;
case 2:
layout_link.setVisibility(View.GONE);
layout_examination_controller.setVisibility(View.GONE);
layout_registrar.setVisibility(View.VISIBLE);
layout_vc.setVisibility(View.GONE);
layout_about.setVisibility(View.GONE);
// v = inflater.inflate(R.layout.dialog_contact, null);
Toast.makeText(context.getApplicationContext(), "position is" + grup_pos, Toast.LENGTH_SHORT).show();
break;
// case 3:
// layout_link.setVisibility(View.GONE);
// layout_examination_controller.setVisibility(View.GONE);
// layout_registrar.setVisibility(View.GONE);
// layout_vc.setVisibility(View.GONE);
// layout_about.setVisibility(View.GONE);
// // v = inflater.inflate(R.layout.events_items, null);
// Toast.makeText(context.getApplicationContext(), "position is" + grup_pos, Toast.LENGTH_SHORT).show();
// break;
case 3:
layout_link.setVisibility(View.GONE);
layout_examination_controller.setVisibility(View.VISIBLE);
layout_registrar.setVisibility(View.GONE);
layout_vc.setVisibility(View.GONE);
layout_about.setVisibility(View.GONE);
// v = inflater.inflate(R.layout.dialog_program, null);
Toast.makeText(context.getApplicationContext(), "position is" + grup_pos, Toast.LENGTH_SHORT).show();
break;
case 4:
layout_link.setVisibility(View.VISIBLE);
layout_examination_controller.setVisibility(View.GONE);
layout_registrar.setVisibility(View.GONE);
layout_vc.setVisibility(View.GONE);
layout_about.setVisibility(View.GONE);
// v = inflater.inflate(R.layout.dialog_program, null);
Toast.makeText(context.getApplicationContext(), "position is" + grup_pos, Toast.LENGTH_SHORT).show();
break;
}
}
// v.invalidate();
return v;
}
@Override
public boolean isChildSelectable(int i, int i2) {
return true;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public void onGroupExpanded(int i) {
super.onGroupExpanded(i);
}
@Override
public void onGroupCollapsed(int i) {
super.onGroupCollapsed(i);
}
@Override
public long getCombinedChildId(long l, long l2) {
return 0;
}
@Override
public long getCombinedGroupId(long l) {
return 0;
}
}
ceci est mon activité principale mon code ci-dessous montre que les parents d'un enfant objet qui est cliqué d'abord sur tout autre élément parent pour expandableListview
cette activité principale est
public class AffiliationActivity extends AppCompatActivity {
ExpandableListView expandableListView;
int previousItem = -1;
//variables to holds course entities
// Getting data from
LayoutInflater layoutInflater;
DbHelper dbHelper;
DbFields dbFields;
private ArrayList<HashMap<String, String>> affiliationChildList;
List<String> faqListHeader;
ScrollView scrollView;
LinearLayout mainLayout,header;
CC_Application application;
Intent intent;
String collegeId;
TextView estdDate,setting,location,type,totAffiliation,totStudent,universityName,fax,phone,email,staff_num;
private ArrayList<String> parentItems = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_affiliation);
//initialise all fields
expandableListView = (ExpandableListView) findViewById(R.id.expandListViewFaq);
layoutInflater = getLayoutInflater();
dbFields = new DbFields();
dbHelper = new DbHelper(this);
scrollView = (ScrollView) findViewById(R.id.scroll);
mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
header = (LinearLayout) findViewById(R.id.header);
faqListHeader = new ArrayList<>();
application= CC_Application.getInstance();
estdDate = (TextView) findViewById(R.id.estd_date);
setting = (TextView) findViewById(R.id.setting);
location = (TextView) findViewById(R.id.location);
type = (TextView) findViewById(R.id.type);
totAffiliation = (TextView) findViewById(R.id.total_affiliation);
totStudent = (TextView) findViewById(R.id.totStudent);
universityName = (TextView) findViewById(R.id.titleC);
fax = (TextView) findViewById(R.id.fax);
phone = (TextView) findViewById(R.id.phone);
email = (TextView) findViewById(R.id.email);
staff_num = (TextView) findViewById(R.id.staff_num);
intent = getIntent();
if(intent!=null) {
collegeId = intent.getStringExtra("getCollegeId").toString();
}
//set parent name for the child
parentItems.add("About Us");
parentItems.add("VC");
parentItems.add("Registrar");
parentItems.add("Examination Controller");
parentItems.add("Links");
//set actionbar customized logo
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(getResources().getDrawable(R.drawable.college_connect_logo));
affiliationChildList = application.getAllAffiliationList(collegeId);
//hold data in expandable listview through adapter
AffiliationAdapter adapter = new AffiliationAdapter(this, parentItems, affiliationChildList);
expandableListView.setAdapter(adapter);
estdDate.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_FOUNDATION_YEAR));
setting.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_SETTING));
universityName.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_NAME));
type.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_TYPE));
totAffiliation.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_AFFILIATED_COLLEGE_NUMBER));
totStudent.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_ENROLLED_STUDENTS));
location.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_ADDRESS));
fax.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_FAX));
phone.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_PHONE));
email.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_EMAIL));
staff_num.setText(affiliationChildList.get(0).get(dbFields.AFFILIATION_ACADEMIC_STAFF_NUMBER));
expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if (groupPosition != previousItem){
expandableListView.collapseGroup(previousItem);
previousItem = groupPosition;
mainLayout.setVisibility(View.GONE);
}
else{
expandableListView.collapseGroup(groupPosition);
previousItem = -1;
mainLayout.setVisibility(View.VISIBLE);
}
}
});
// Listview Group collasped listener
expandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
mainLayout.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(),"Group Collapsed",Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_affiliation, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
activité principale incluse.
J'ai 5 éléments parents, quand j'ai cliqué sur un parent, il montre ses détails (enfants). Après avoir cliqué sur l'autre parent, il montre les mêmes éléments enfants du premier parent que j'ai cliqué. –