ListView的基本用法

  建博客这么久了,一直没能写点什么,其实一直想写来着,却又无从下手,今天终于下定决心写点什么,好吧,就ListView吧,这个控件是个搞基控件,所以初学者都会觉得很难,于是乎写了个demo,好吧转入正题!

  • 效果图:

  • 工程结构(3个class,2个xml):

    分别是一个activity

    一个实体类Mode

    一个适配器adapter

  • 首先是程序的入口类MainActivity:
public class MainActivity extends AppCompatActivity {

    private List<Mode> itemList =null;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Context context = this;
setContentView(R.layout.activity_main);
......
initdata();
ListView listView = (ListView) findViewById(R.id.lv);
myAdapter myAdapter = new myAdapter(this, itemList);
listView.setAdapter(myAdapter); }
//绑定假数据
void initdata(){
for (int i = 0; i < 20; i++) {
Mode mode = new Mode();
mode.setTitle("标题" + i);
mode.setName("程序员" + i);
itemList.add(mode);
}
}
  • activity_main.xml:
 <ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
  • list_item.xml:

这个布局文件决定了item的样式、结构。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <LinearLayout
android:background="@color/colorAccent"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp"> <TextView
android:gravity="center"
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"/> <TextView
android:gravity="center"
android:id="@+id/tv_name"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"/>
</LinearLayout> </LinearLayout>
  • Mode实体类:
public class Mode implements Serializable{
private String title=null;
private String name=null; public String getTitle(){
return title;
}
public void setTitle(String Title){
title=Title;
}
public String getName(){
return name;
}
public void setName(String Name){
name=Name;
}
}
  • 接下来就是最重要的Adapter——myAdapter.class:
package com.example.administrator.listview;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView; import java.util.List; /**
* Created by Administrator on 2016/6/28.
*/
public class myAdapter extends BaseAdapter{ private Context context;
private List<Mode> modeList=null; public myAdapter(Context context,List<Mode> listList) {//activity中传递过来的上下文和list集合
this.context=context;
modeList=listList;
} @Override
public int getCount() {//获取item的数目
return modeList.size();
} @Override
public Object getItem(int position) {//获取item
return modeList.get(position);
} @Override
public long getItemId(int position) {//item对应的id
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHodler viewHodler=null;
if(null==convertView)
{
viewHodler=new ViewHodler();
convertView=convertView.inflate(context,R.layout.list_item,null);
viewHodler.title=(TextView)convertView.findViewById(R.id.tv_title);
viewHodler.name=(TextView)convertView.findViewById(R.id.tv_name);
convertView.setTag(viewHodler);
}else{
viewHodler=(ViewHodler)convertView.getTag();
} Mode mode=modeList.get(position);
if (mode!=null){
viewHodler.title.setText(mode.getTitle());
viewHodler.name.setText(mode.getName());
} return convertView;
} public class ViewHodler {
TextView title;
TextView name;
}
}

    ListView大致基本结构就是如上所示,如果本文有不对的地方,还望指正。

ListView——android菜鸟成长之路的更多相关文章

  1. Android Studio项目目录结构介绍——android菜鸟成长之路

    在Android Studio中,提供了以下几种项目结构类型 我们一般常用的有以下两种结构: Project 结构类型 app/build/ app模块build编译输出的目录 app/build.g ...

  2. Android菜鸟成长记10 -- ListVew

     ListView在我们学习Android的过程中是非常重要得一个部分. listview主要有两个职责 1)将数据填充到布局. 2)处理用户的选择点击等操作. 一个ListView的创建需要3个元素 ...

  3. Android菜鸟成长记12 -- ORMLite的简单使用

    在我们的开发中,为了提高开发效率,我们一般都会使用到框架,ormilte则是我们必不可少的数据库框架. 对于ORMLite我也是今天才刚刚接触,我们先从一个简单的项目来了解它吧. ORMLite ja ...

  4. Android菜鸟成长记11 -- sqlite数据库的设计和升降级

    Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...

  5. Android菜鸟成长记16 -- JSON的解析

    JSON的定义  一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  6. Android菜鸟成长记15 -- BitMap

    BitMap简介 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bi ...

  7. Android菜鸟成长记14 -- AsnyTask

    本篇随笔将讲解一下Android的多线程的知识,以及如何通过AsyncTask机制来实现线程之间的通信. 一.Android当中的多线程 在Android当中,当一个应用程序的组件启动的时候,并且没有 ...

  8. Android菜鸟成长记13 -- 初识application

    二.Application 简介 Application 类是用来维护应用程序全局状态.你可以提供自己的实现,并在 AndroidManifest.xml文件的 <application> ...

  9. Android菜鸟成长记9 -- selector的用法

    在项目开发的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界面,用美工给的图片取代系统图片.开始时,我只是给按钮等设置一下背景图片,这样做虽然美观了,但界面看起来却比较死板,比如用户点 ...

随机推荐

  1. 实现断点续传的FTP下载类(支持多线程多任务下载)

    using System; using System.Collections.Generic; using System.Text; using System.Threading; using Sys ...

  2. Bootstrap学习之起步

    安装Bootstrap环境 从 http://getbootstrap.com/ 上下载 Bootstrap 的最新版本.我下载的是预编译版,即下图中的第一个. 将其解压缩到任意目录即可看到以下(压缩 ...

  3. 用c++写一个广告系统

    用到的基础类库 1.sstream <sstream> 库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输 ...

  4. mysql 5.7配置文件参数详解

    read_buffer_size 默认大小:128KB 最大:2GB 最小:8KB 增量:必须为4KB的整数倍,如果配置的不是整数倍,会向下取整 用途: 1.MyISAM表顺序扫描提供的缓存 2.所有 ...

  5. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(八)

    前言 本篇幅将对系统的菜单管理模块进行说明,系统的菜单采用树形结构,这样可以更好地方便层级设计和查看.本示例将说明如何通过EntityFramework读取递归的菜单树形结构,以及结合EasyUI的t ...

  6. JavaWeb chapter10 JavaWeb开发模式

    1.  开发模式 (1)开发模式1:JSP+JavaBean (2)开发模式2:Servlet+JSP+JavaBean (MVC) 2.JavaBean 本质上是一个普通的Java类:需要遵循一定的 ...

  7. UIDatePicker和UIToolbar的使用

    功能,用UIDatePicker 和UIToolbar 实现点击文本框弹出日期选择空间. 点击确定按钮获取时间显示到对应的Text Field里面,点击取消按钮隐藏键盘. 1.创建textField控 ...

  8. wxPython入门练习代码 三

    DoubleEventFrame.py: #!/usr/bin/env/ python import wx class DoubleEventFrame(wx.Frame): def __init__ ...

  9. PHP语言基础简单整理

    1.开始结束标记<? ... ?> 2.定义变量:$变量名 例: $str="锦清笋";不需要指明数据类型 3.输出语句:(1)echo "hello wor ...

  10. 简易线程池Thread Pool

    1. 基本思路 写了个简易的线程池,基本的思路是: 有1个调度线程,负责维护WorkItem队列.管理线程(是否要增加工作线程).调度(把工作项赋给工作线程)等 线程数量随WorkItem的量动态调整 ...