针对安卓代码基础,我大体分为三类:语法、控件和生命周期,此文简单记录一下常用控件之一ListView。
项目名称 ListDemo-Android
使用Android studio创建一个项目,名为ListDemo,创建时生成一个MainActivity的空界面
1,在layout文件包中,找到activity_main.xml文件,设置TetxView的id为text,添加一个ListView的控件,占满屏幕。代码如下:
private TextView textView; private ListView listView ; private ListViewAdapter listViewAdapter ;
textView = (TextView) findViewById(R.id.text); listView = (ListView) findViewById(R.id.listview); textView.setText("代码展示ListView的实例:");
public class ListViewAdapter extends BaseAdapter { @Override public int getCount() { return 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { return null; } }
public class UserModel { private int iconint ; private String name ; private int age ; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setIconint(int iconint) { this.iconint = iconint; } public int getIconint() { return iconint; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public class ListViewAdapter extends BaseAdapter{ private Context context ; private Listlist; @Override public int getCount() { return list != null ? list.size() : 0; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } private ListAdapterView adapterView ; @Override public View getView(int position, View convertView, ViewGroup parent) { adapterView = null ; if (convertView == null) { adapterView = new ListAdapterView(); convertView = LayoutInflater.from(context).inflate(R.layout.view_adapter,parent,false); adapterView.icon = (ImageView ) convertView.findViewById(R.id.icon) ; adapterView.name = (TextView) convertView.findViewById(R.id.name); adapterView.age = (TextView) convertView.findViewById(R.id.age); // View v = Inflater.class convertView.setTag(adapterView); }else { adapterView = (ListAdapterView) convertView.getTag(); } //赋值 UserModel m= list.get(position); adapterView.icon.setBackgroundResource(m.getIconint()); adapterView.name.setText(m.getName()); adapterView.age.setText(m.getAge()+""); return convertView; } public ListViewAdapter(Context context, List list) { this.list = list; this.context = context; } static class ListAdapterView { private ImageView icon ; private TextView name ; private TextView age ; } }
此时,返回到MainActivity,java类,代码:
public class MainActivity extends AppCompatActivity { private TextView textView; private ListView listView ; private ListViewAdapter listViewAdapter ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text); listView = (ListView) findViewById(R.id.listview); textView.setText("代码展示ListView的实例:"); Listlist = new ArrayList<>(); for (int i = 0 ; i<20;i++){ UserModel m = new UserModel(); m.setAge(i); switch (i%5){ case 0: m.setIconint(R.mipmap.a); break; case 1: m.setIconint(R.mipmap.b); break; case 2: m.setIconint(R.mipmap.c); break; case 3: m.setIconint(R.mipmap.d); break; default: m.setIconint(R.mipmap.a); break; } m.setName("第"+i+"个"); list.add(m); } listViewAdapter = new ListViewAdapter(this,list); listView.setAdapter(listViewAdapter); } }
运行结果:如图: