-思路
1先在Activity中静态加载一个fragment,在fragment里面操做
2在fragment中添加ListView控件
3图例所示的listView模板还要本身从新定义 因此要建立一个XML文件自定义布局 并在java中添加到listView中
4 这里我是按照要求自定义了一个Baseadapter类来传输数据到前端。
5为了使代码更简洁 我把姓名,年龄,邮箱地址等要信息打包成一个Message类,这样不用重复写代码javascript
XML文件分三个:
1 main_activity(fragment部分)前端
<fragment android:id="@+id/list_fragment" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.example.administrator.deadline5_2.ListFragment" tools:layout="@layout/fragment_list"/>
2 fragment_list(ListView部分)java
<ListView android:id="@+id/list_item1" android:layout_width="match_parent" android:layout_height="match_parent" />
3 list_itemandroid
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/txt_name" android:hint="@string/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/txt_age" android:hint="@string/age" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/txt_email" android:hint="@string/email" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/txt_address" android:hint="@string/address" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
java文件ide
1 Message.java布局
public class Message { private String name; private String age; private String email; private String address; Message(String name,String age,String email,String address) { this.name = "姓名: "+name; this.age = "年龄: "+age; this.email = "邮箱: "+email; this.address = "地址: "+address; } public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setEmail(String email) { this.email = email; } public void setAddress(String address){ this.address = address; } public String getName(){ return name; } public String getAge(){ return age; } public String getEmail(){ return email; } public String getAddress(){ return address; } }
2 Messageadapter.javathis
public class MessageAdapter extends BaseAdapter { private ArrayList<Message> mData; private Context context; MessageAdapter(ArrayList<Message> mData, Context context) { this.mData = mData; this.context = context; } @Override public int getCount() { return mData.size();//决定了现实多少行ListView } //根据ListView所在位置返回view @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view ==null) { view = LayoutInflater.from(context).inflate(R.layout.list_item,viewGroup,false); } //获得view中的控件 TextView txt_name = (TextView)view.findViewById(R.id.txt_name); TextView txt_age = (TextView)view.findViewById(R.id.txt_age); TextView txt_email = (TextView)view.findViewById(R.id.txt_email); TextView txt_address = (TextView)view.findViewById(R.id.txt_address); txt_name.setText(mData.get(i).getName()); txt_age.setText(mData.get(i).getAge()); txt_email.setText(mData.get(i).getEmail()); txt_address.setText(mData.get(i).getAddress()); return view ; } }
3ListFragment.java指针
public class ListFragment extends Fragment { private List<Message> mData ; private Context context; private MessageAdapter mAdapter; private ListView list_item1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_list, container, false); context = getActivity(); mData = new ArrayList<>(); mData.add(new Message("蔡志坤","25","ffczk86@gmail.com","厦门市")); mData.add(new Message("李杰华","25","aa@bb.com","漳州市")); mData.add(new Message("张亮","25","cc@gmail.com","厦门市")); mData.add(new Message("陈旭","25","ccadd@gmail.com","厦门市")); mData.add(new Message("刘玄德","25","ffczk@gmail.com","福州市")); mAdapter = new MessageAdapter((ArrayList<Message>)mData,context); list_item1 = (ListView)view.findViewById(R.id.list_item1); list_item1.setAdapter(mAdapter); return view; } }
须要注意的是在写BaseAdapter时必定要重写getCount方法和getView方法
在getView方法中先把layout 转换成view 在获取里面的控件 并setText。
在ListFragment。java中设置数据建立适配器传到前端时必定要按照步骤来 不然在运行是会出现空指针异常code
完成效果图
blog