我点击它后创建了一个自定义的可扩展列表,将移动到子项, 我可以使用单击侦听器控制可扩展列表(例如,如果我单击其中一个组项目,它应该转到其他视图(布局)而不是继续使用子项目 这是我的代码
public class MainActivity extends Activity
{
private ExpandListAdapter ExpAdapter;
private ArrayList<ExpandListGroup> ExpListItems;
private ExpandableListView ExpandList;
Header1 header;
ExpandableList ExpandableList;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
header = (Header1)findViewById(R.id.header);
header.initHeader();
ExpandableList = (ExpandableList)findViewById(R.id.Expanadable);
ExpandableList.Expandableview();
ExpandList = (ExpandableListView) findViewById(R.id.ExpList);
ExpListItems = SetStandardGroups();
ExpAdapter = new ExpandListAdapter(MainActivity.this, ExpListItems);
ExpandList.setAdapter(ExpAdapter);
}
public ArrayList<ExpandListGroup> SetStandardGroups() {
ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>();
ArrayList<ExpandListChild> list2 = new ArrayList<ExpandListChild>();
ArrayList<ExpandListChild> list3 = new ArrayList<ExpandListChild>();
ExpandListGroup gru1 = new ExpandListGroup();
gru1.setName("Employee Search");
ExpandListChild ch1_1 = new ExpandListChild();
ch1_1.setName("First Name");
ch1_1.setTag(null);
list2.add(ch1_1);
ExpandListChild ch1_2 = new ExpandListChild();
ch1_2.setName("Last Name");
ch1_2.setTag(null);
list2.add(ch1_2);
ExpandListChild ch1_3 = new ExpandListChild();
ch1_3.setName("Email ID");
ch1_3.setTag(null);
list2.add(ch1_3);
ExpandListChild ch1_4 = new ExpandListChild();
ch1_4.setName("Associate ID");
ch1_4.setTag(null);
list2.add(ch1_4);
gru1.setItems(list2);
list2 = new ArrayList<ExpandListChild>();
ExpandListGroup gru2 = new ExpandListGroup();
gru2.setName("Working Time");
ExpandListChild ch2_1 = new ExpandListChild();
ch2_1.setName("Leave Request");
ch2_1.setTag(null);
list2.add(ch2_1);
ExpandListGroup gru4 = new ExpandListGroup();
gru4.setName("Leave Request");
list3 = new ArrayList<ExpandListChild>();
ExpandListChild ch21_1 = new ExpandListChild();
ch21_1.setName("create Leave");
ch21_1.setTag(null);
list3.add(ch21_1);
gru4.setItems(list3);
ExpandListChild ch2_2 = new ExpandListChild();
ch2_2.setName("CATS Regular/Record Working time");
ch2_2.setTag(null);
list2.add(ch2_2);
/* ExpandListChild ch2_3 = new ExpandListChild();
ch2_3.setName("And an other movie");
ch2_3.setTag(null);
list2.add(ch2_3);*/
gru2.setItems(list2);
list2 = new ArrayList<ExpandListChild>();
ExpandListGroup gru3 = new ExpandListGroup();
gru3.setName("Travel and Expenses");
ExpandListChild ch3_1 = new ExpandListChild();
ch3_1.setName("Travel Request");
ch3_1.setTag(null);
list2.add(ch3_1);
ExpandListChild ch3_2 = new ExpandListChild();
ch3_2.setName("Travel Expenses");
ch3_2.setTag(null);
list2.add(ch3_2);
gru3.setItems(list2);
list.add(gru1);
list.add(gru2);
list.add(gru3);
return list;
}
}
现在如果我点击“employeesearch”组,它应该移动到另一个布局。并将剩余组保持与可扩展列表相同。下面是Adapter类。
public class ExpandListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<ExpandListGroup> groups;
public ExpandListAdapter(Context context, ArrayList<ExpandListGroup> groups) {
this.context = context;
this.groups = groups;
}
public void addItem(ExpandListChild item, ExpandListGroup group) {
if (!groups.contains(group)) {
groups.add(group);
}
int index = groups.indexOf(group);
ArrayList<ExpandListChild> ch = groups.get(index).getItems();
ch.add(item);
groups.get(index).setItems(ch);
}
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
ArrayList<ExpandListChild> chList = groups.get(groupPosition).getItems();
return chList.get(childPosition);
}
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view,
ViewGroup parent) {
ExpandListChild child = (ExpandListChild) getChild(groupPosition, childPosition);
if (view == null) {
LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
view = infalInflater.inflate(R.layout.expandlist_child_item, null);
}
TextView tv = (TextView) view.findViewById(R.id.tvChild);
tv.setText(child.getName().toString());
tv.setTag(child.getTag());
// TODO Auto-generated method stub
return view;
}
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
ArrayList<ExpandListChild> chList = groups.get(groupPosition).getItems();
return chList.size();
}
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groups.get(groupPosition);
}
public int getGroupCount() {
// TODO Auto-generated method stub
return groups.size();
}
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isLastChild, View view,
ViewGroup parent) {
ExpandListGroup group = (ExpandListGroup) getGroup(groupPosition);
if (view == null) {
LayoutInflater inf = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
view = inf.inflate(R.layout.expandlist_group_item, null);
}
TextView tv = (TextView) view.findViewById(R.id.tvGroup);
tv.setText(group.getName());
// TODO Auto-generated method stub
return view;
}
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
public boolean isChildSelectable(int arg0, int arg1) {
// TODO Auto-generated method stub
return true;
}
}
答案 0 :(得分:0)
似乎很适合onGroupClick
来自文档:
public abstract boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id)
Since: API Level 1
Callback method to be invoked when a group in this expandable list has been clicked.
Parameters
parent The ExpandableListConnector where the click happened
v The view within the expandable list/ListView that was clicked
groupPosition The group position that was clicked
id The row id of the group that was clicked