【发布时间】:2013-12-02 11:41:21
【问题描述】:
我正在尝试使用在运行时更新父元素和子元素的适配器创建一个可扩展的列表视图。我有一个父元素的数组列表和一个子元素的数组列表。父对象是一个名为“Group”的对象数组列表,每个组都有一个名为“Item”的对象数组列表。所以 Group 是父元素,Item 是子元素。
我目前有一个可扩展的列表视图,它只对父元素和子元素中的字符串使用固定数组。我需要知道如何在运行时使用数组列表动态地做到这一点。请任何人都可以帮我解决这个问题。提前致谢。
这是我目前的可扩展列表视图代码:
public class ConfigAdapter extends BaseExpandableListAdapter
{
private Activity activity;
public String []parentList = {"parent1", "parent2", "parent3", "parent4",
"parent5", "parent6", "parent7"}; // String array for parent list text views
public String [][]childList = {
{
"parent1 child1", "parent1 child2", "parent1 child3", "parent1 child4"
},
{
"parent2 child1", "parent2 child2"
},
{
"parent3 child1", "parent3 child2"
},
{
"parent4 child1", "parent4 child2", "parent4 child3"
},
{
"parent5 child1", "parent5 child2", "parent5 child3"
},
{
"parent6 child1"
},
{
"parent7 child1", "parent7 child2", "parent7 child3"
}
}; // String array for child list text views
public ConfigAdapter()
{
assert "Default constructor not used." != null; // Assert to prompt not to use this constructor.
}
public ConfigAdapter(Activity refActivity)
{
this.activity = refActivity;
}
public void setPage(Page refPage)
{
page = refPage;
}
public Page getPage()
{
return page;
}
@Override
public Object getChild(int groupPosition, int childPosition)
{
return null;
}
@Override
public long getChildId(int groupPosition, int childPosition)
{
return 0;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
{
LayoutInflater childLayoutInflater = (LayoutInflater) activity.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View childView = childLayoutInflater.inflate(R.layout.config_child_list_view, null);
TextView itemTextView = (TextView) childView.findViewById(R.id.configListTextView1);
itemTextView.setText(childList[groupPosition][childPosition]);
final ViewSwitcher childViewSwitcher = (ViewSwitcher) childView.findViewById(R.id.configListViewSwitcher);
final TextView dataObjectTextView = (TextView) childViewSwitcher.findViewById(R.id.configListTextView2);
dataObjectTextView.setText("99 99 999 99 9 9 999 9 9 99 99999 9999 9999");
final EditText dataObjectEditText = (EditText) childViewSwitcher.findViewById(R.id.configEditText1);
dataObjectEditText.setHint("hello");
childViewSwitcher.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(childViewSwitcher.getCurrentView() == dataObjectTextView)
{
childViewSwitcher.showNext();
}
}
});
{
}
return childView;
}
@Override
public int getChildrenCount(int groupPosition)
{
return childList[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition)
{
return groupPosition;
}
@Override
public int getGroupCount()
{
return parentList.length;
}
@Override
public long getGroupId(int groupPosition)
{
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
{
TextView tvParent = new TextView(activity);
tvParent.setText(parentList[groupPosition]);
tvParent.setPadding(10, 20, 10, 20);
tvParent.setTextSize(18);
tvParent.setTypeface(null, Typeface.BOLD); // Sets text to bold
return tvParent;
}
@Override
public boolean hasStableIds()
{
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition)
{
return true;
}
}
【问题讨论】:
-
您的问题是什么,您需要什么帮助?
标签: android dynamic arraylist expandablelistview expandablelistadapter