我正在使用这个 library在一个 fragment 中,但是当我运行应用程序时,SwipeMenuListView 没有显示它的内容,在堆栈上我发现一些人在 onCreateView 方法中使用 listview,我试过了但是没有用
public class AutorizadasFragment extends Fragment {
private SwipeMenuListView listView;
private CustomArrayAdapter adapter;
private List<String> data;
public AutorizadasFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_autorizadas, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
data = new ArrayList<String>();
data.add("Teste 1");
data.add("Teste 2");
data.add("Teste 3");
data.add("Teste 4");
data.add("Teste 5");
listView = (SwipeMenuListView) getActivity().findViewById(R.id.list);
adapter = new CustomArrayAdapter(getActivity(), data);
listView.setAdapter(adapter);
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
// create "open" item
SwipeMenuItem openItem = new SwipeMenuItem(
getActivity());
// set item background
openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
0xCE)));
// set item width
openItem.setWidth(90);
// set item title
openItem.setTitle("Open");
// set item title fontsize
openItem.setTitleSize(18);
// set item title font color
openItem.setTitleColor(Color.BLACK);
// add to menu
menu.addMenuItem(openItem);
// create "delete" item
SwipeMenuItem deleteItem = new SwipeMenuItem(
getActivity());
// set item background
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
0x3F, 0x25)));
// set item width
deleteItem.setWidth(90);
// set a icon
deleteItem.setIcon(R.drawable.ic_exit);
// add to menu
menu.addMenuItem(deleteItem);
}
};
listView.setMenuCreator(creator);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_main, menu);
}
}
XML:
<LinearLayout
style="@style/FormRegister"
android:orientation="vertical"
android:weightSum="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.baoyz.swipemenulistview.SwipeMenuListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
</LinearLayout>
最佳答案
您可以通过添加私有(private)属性来保存对 Root View 的引用 例如
private View rootView = null;
并在 onCreateView 中更改以下行:
View rootView = inflater.inflate(R.layout.fragment_autorizadas, container, false);
到
rootView = inflater.inflate(R.layout.fragment_autorizadas, container, false);
那么你就不需要使用“getActivity().findViewById(R.id.list);” (它将变成“rootView.findViewById(R.id.list);”)
我提出这个建议是因为我不确定调用 onActivityCreated() 时在 onCreateView 中创建的 View 是否真的添加到您的 Activity Root View 中。
关于android - Fragment 中的 ListView 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800173/