美文网首页
Android重写ListViewAdapter

Android重写ListViewAdapter

作者: ryanxun | 来源:发表于2019-06-13 11:06 被阅读0次

运用AndroidStudio来实现

这个方式可以自定义listview的列表
这里运用工厂模式来写
首先需要一个pojo类 我建立一个公司类

package com.example.ryan.hatching.pojo;

public class Company {
    public Integer getImageid() {
        return imageid;
    }

    public void setImageid(Integer imageid) {
        this.imageid = imageid;
    }

    public String getCompanyname() {
        return companyname;
    }

    public void setCompanyname(String companyname) {
        this.companyname = companyname;
    }

    public String getSheng() {
        return sheng;
    }

    public void setSheng(String sheng) {
        this.sheng = sheng;
    }

    public String getShi() {
        return shi;
    }

    public void setShi(String shi) {
        this.shi = shi;
    }

    public String getQu() {
        return qu;
    }

    public void setQu(String qu) {
        this.qu = qu;
    }

    private Integer imageid;
    private String companyname;
    private String sheng;
    private String shi;
    private String qu;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    private Integer id;
}

pojo类建立完毕需要重写一份ArrayAdapter

我这里直接用项目来实验了

package com.example.ryan.hatching.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.example.ryan.hatching.R;
import com.example.ryan.hatching.pojo.Company;

import java.util.List;

public class CompanyAdapter extends ArrayAdapter<Company> {
    private Context context;
    private int resource;
    private List<Company> companies;
    private ListView listView;
    public CompanyAdapter(@NonNull Context context, int resource, List<Company> companies, ListView listView) {
        super(context, resource);
    this.context=context;
    this.resource=resource;
    this.companies=companies;
    this.listView=listView;
    }

    @Override
    public int getCount() {
        return companies.size() ;
    }

    @Nullable
    @Override
    public Company getItem(int position) {
        return companies.get(position);
    }

    @NonNull
    @Override
    public View getView(int position,@Nullable View convertView,@NonNull ViewGroup parent) {
        if (convertView==null){
            convertView=LayoutInflater.from(this.getContext()).inflate(resource,parent,false);
        }
        TextView companynameTv,shengTv,shiTv,quTv,idTv;
        ImageView logoImg;

        logoImg=convertView.findViewById(R.id.logoImg);
        companynameTv=convertView.findViewById(R.id.companynameTv);
        shengTv=convertView.findViewById(R.id.shengTv);
        shiTv=convertView.findViewById(R.id.shiTv);
        quTv=convertView.findViewById(R.id.quTv);
        idTv=convertView.findViewById(R.id.idTv);

        logoImg.setImageResource(companies.get(position).getImageid());
        companynameTv.setText(companies.get(position).getCompanyname());
        shengTv.setText(companies.get(position).getSheng());
        shiTv.setText(companies.get(position).getShi());
        quTv.setText(companies.get(position).getQu());
        idTv.setText(companies.get(position).getId()+"");
        return convertView;
    }
}

这个主界面布局就很简单了一个listview就可以


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

当人我们需要一个listview的布局文件
```Android
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/idTv"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="50dp" />

    <ImageView
        android:src="@drawable/logo"
        android:id="@+id/logoImg"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="50dp"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_weight="5"
        android:layout_width="0dp"
        android:layout_height="50dp">

        <TextView
            android:id="@+id/companynameTv"
            android:text="创孵 "
            android:layout_width="wrap_content"
            android:layout_height="25dp" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="25dp">
            <TextView
                android:id="@+id/shengTv"
                android:text="省"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/shiTv"
                android:text="市"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/quTv"
                android:text="区"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

接下来就是直接main函数引用


    private ArrayList<View> aList;
    private ListView ComLv;
    private List<Company> companies;
    private CompanyAdapter companyAdapter;

#这是定义
然后需要具体的传值
```Android
private void Companyshow() {
        companies=new ArrayList<>();
        companyAdapter=new CompanyAdapter(getActivity(),R.layout.company_adapter,companies,ComLv);
        for (int i=0; i<id.length;i++){
            Company c=new Company();
            c.setId(i);
            c.setImageid(img[i]);
            c.setCompanyname(Comname[i]);
            c.setSheng(sheng[i]);
            c.setShi(shi[i]);
            c.setQu(qu[i]);
            companies.add(c);
        }
        ComLv.setAdapter(companyAdapter);

    }

当然实例化我这里没写,大家自己理解

相关文章

网友评论

      本文标题:Android重写ListViewAdapter

      本文链接:https://www.haomeiwen.com/subject/naejfctx.html