我有一个可用的expandablelistview代码,它可以作为一个独立的工作。 我有另一个用于滑动标签视图的工作代码,我单独写过。
这些都是在通过一些博客,android dev和stackoverflow问题之后编写的。
当我尝试将可扩展列表视图组合并放入其中一个片段时,我最终出现错误,我无法解决。
这是Fragment片段中的代码:
public class Fragment1 extends Fragment {
private static final String NAME = "NAME";
private static final String IS_EVEN = "IS_EVEN";
private ExpandableListAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
for (int i = 0; i < 10; i++) {
Map<String, String> curGroupMap = new HashMap<String, String>();
groupData.add(curGroupMap);
curGroupMap.put(NAME, "Group " + i);
curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");
List<Map<String, String>> children = new ArrayList<Map<String, String>>();
for (int j = 0; j < 2; j++) {
Map<String, String> curChildMap = new HashMap<String, String>();
children.add(curChildMap);
curChildMap.put(NAME, "Child " + j);
curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
}
childData.add(children);
}
// Set up our adapter
mAdapter = new SimpleExpandableListAdapter(
getActivity(),
groupData,
android.R.layout.simple_expandable_list_item_1,
new String[] { NAME, IS_EVEN },
new int[] { android.R.id.text1, android.R.id.text2 },
childData,
android.R.layout.simple_expandable_list_item_2,
new String[] { NAME, IS_EVEN },
new int[] { android.R.id.text1, android.R.id.text2 }
);
setListAdapter(mAdapter);
}
}`
我在最后一行不断收到错误:'方法setListAdapter(ExpandableListAdapter)未定义Fragment1'类型。
其余代码没有显示错误。
请帮忙。我该如何纠正这个问题。
答案 0 :(得分:5)
我能够自己解决问题。为了将来参考,这里是代码。可能很乱,需要清理,但它现在可以使用了!
public class HotDeals extends Fragment {
private ExpandableListAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.saved_tabs, null);
return v;
}
private static final String NAME = "NAME";
private static final String IS_EVEN = "IS_EVEN";
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
for (int i = 0; i < 10; i++) {
Map<String, String> curGroupMap = new HashMap<String, String>();
groupData.add(curGroupMap);
curGroupMap.put(NAME, "Group " + i);
curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");
List<Map<String, String>> children = new ArrayList<Map<String, String>>();
for (int j = 0; j < 2; j++) {
Map<String, String> curChildMap = new HashMap<String, String>();
children.add(curChildMap);
curChildMap.put(NAME, "Child " + j);
curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
}
childData.add(children);
}
ExpandableListView lv = (ExpandableListView) getActivity().findViewById(R.id.list);
// Set up our adapter
mAdapter = new SimpleExpandableListAdapter(
getActivity(),
groupData,
android.R.layout.simple_expandable_list_item_1,
new String[] { NAME, IS_EVEN },
new int[] { android.R.id.text1, android.R.id.text2 },
childData,
android.R.layout.simple_expandable_list_item_2,
new String[] { NAME, IS_EVEN },
new int[] { android.R.id.text1, android.R.id.text2 }
);
lv.setAdapter(mAdapter);
}
}
@Divers&amp; @Dixit - Thanx。
答案 1 :(得分:0)
Fragment不包含方法setListAdapter
。 ListFragment做。你必须从这个类扩展你的片段来解决这个问题。
答案 2 :(得分:0)
这篇文章已有近2年的历史,但此页面中没有答案是相关的。
回答PO问题,
方法setListAdapter(ExpandableListAdapter)未定义Fragment1类型
因为setListAdapter
是ListFragment或ListActivity的方法,它等待ListAdapter
或其子类作为参数。您收到此错误是因为您为其提供了ExpandableListAdapter
,但未实现ListAdapter
接口。
希望这会对某人有所帮助。