ListView适配优化

一,在主界面创建ListView控件

<ListView
    android:id="@+id/listView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    ></ListView>
二.创建XMl布局文件,控件根据个人布局
 <ImageView
     android:id="@+id/iv_icon"
     android:layout_width="60dp"
     android:layout_height="60dp" />
 <TextView
     android:id="@+id/tv_title"
     android:layout_toRightOf="@+id/iv_icon"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
<TextView
    android:id="@+id/tv_des"
    android:layout_below="@+id/tv_title"
    android:layout_toRightOf="@+id/iv_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
三,创建Bean类
 

public class News {
    private String title;
    private String des;
    private int resId;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }

    public int getResId() {
        return resId;
    }

    public void setResId(int resId) {
        this.resId = resId;
    }

    public News(String title, String des, int resId) {
        this.title = title;
        this.des = des;
        this.resId = resId;
    }

    public News() {
        super();
    }
}

4,在主类中查找控件,创建数据存入集合中并适配


public class MainActivity extends AppCompatActivity {

    private ListView listview;
    private ArrayList<News> newsList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        listview.setAdapter(new NewsAdapter(newsList,this));


    }

    private void initView() {
        //查找控件
        listview = (ListView) findViewById(R.id.listView);
        newsList = new ArrayList<News>();
        for(int i=0;i<1000;i++){
            newsList.add(new News("今天王宝强shi"+i,"信息量非差大,网民停止",R.drawable.a));

        }

    }
}
5,创建适配器的类
public class NewsAdapter extends BaseAdapter {
    private ArrayList<News> newsList;
   private Context context;

    public NewsAdapter(ArrayList<News> newsList, Context context) {
        this.newsList = newsList;
        this.context = context;
    }

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

    @Override
    public Object getItem(int i) {
        return newsList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup) {
         ViewHolder viewHolder;
        if (convertView==null){
            convertView = View.inflate(context, R.layout.lv_item, null);
            viewHolder=new ViewHolder();
            viewHolder.iv_icon= convertView.findViewById(R.id.iv_icon);
            viewHolder.tv_title= convertView.findViewById(R.id.tv_title);
            viewHolder.tv_des= convertView.findViewById(R.id.tv_des);
            convertView.setTag(viewHolder);

        }else {
             viewHolder= (ViewHolder) convertView.getTag();
        }
        viewHolder.tv_title.setText(newsList.get(i).getTitle());
        viewHolder.tv_des.setText(newsList.get(i).getTitle());
        viewHolder.iv_icon.setImageResource(newsList.get(i).getResId());

        return convertView;
    }
    class ViewHolder{
        TextView tv_title;
        TextView tv_des;

        ImageView iv_icon;
    }
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值