1.FragmentActivity的xml布局文件中,id这样写
2.listview子项布局,用个简单的的文本控件显示数据
3.FragmentActivity要继承ListFragment,直接使用setListAdapter(ListItems)把数据加载进去,也可以用listview.setAdapter(ListItems)
4.使SimpleAdapter作为适配器
public class TodoitemsFragment extends ListFragment {
//用于显示布局里的动物名称
private String[] names = new String[]{"Lion","Tiger","Monkey","Dog","Cat","elephant"};
private ListView list;
private SimpleAdapter simpleAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.todoitems_fragment,container,false);
Toast.makeText(getActivity(), "onCreateView", Toast.LENGTH_SHORT).show();
list=view.findViewById(android.R.id.list);
//创建一个list集合,list集合的元素是Map
List
5.simpleAdapter=new SimpleAdapter(getContext(),ListItems,R.layout.test,new String[]{"header"},new int[]{R.id.text1});
simpleAdapter中五个参数的
第一个参数:上下文对象
第二个参数:数据源是含有Map的一个集合
第三个参数:每一个item的布局文件
第四个参数:new String[]{}数组,数组的里面的每一项要与第二个参数中的存入map集合的的key值一样,一一对应
第五个参数:new int[]{}数组,数组里面的第三个参数中的item里面的控件id。
6.在simpleAdapter中添加控件事件,比如在子项布局文件中再添加个按钮控件id为button1,
simpleAdapter=new SimpleAdapter(getContext(),ListItems,R.layout.test,new String[]{"header"},new int[]{R.id.text1}){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view1 = super.getView(position, convertView, parent);
Button icon = view1.findViewById(R.id.button1);
icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "点击了按钮!", Toast.LENGTH_SHORT).show();
}
});
return view1;
}
};
这样就可以直接定义按钮点击事件了