自定义adapter完成列表的显示

本文详细介绍如何使用ListView和自定义Adapter实现列表信息展示。包括创建Message类存储数据,自定义BaseAdapter类处理数据,以及在ListFragment中加载并显示列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 任务要求
    使用ListView和自定义Adapter完成列表信息的显示
    1126685-20170427130513897-332188409.png

-思路
1先在Activity中静态加载一个fragment,在fragment里面操作
2在fragment中添加ListView控件
3图例所示的listView模板还要自己重新定义 所以要创建一个XML文件自定义布局 并在java中添加到listView中
4 这里我是按照要求自定义了一个Baseadapter类来传输数据到前端。
5为了使代码更简洁 我把姓名,年龄,邮箱地址等要信息打包成一个Message类,这样不用重复写代码

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部分)

    <ListView
        android:id="@+id/list_item1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3 list_item

 <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文件

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.java

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中设置数据创建适配器传到前端时一定要按照步骤来 否则在运行是会出现空指针异常

完成效果图
1126685-20170427130546475-1183219358.png

转载于:https://www.cnblogs.com/air-java/p/6771060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值