这个学期开始认真的学期的安卓,最早接触安卓是在去年暑假的那个时候,半夜熬夜做了个很小的东西,计算器和打电话,发短信的软件。奈何这个暑假也快到来,时间也不多了。
说下ListView吧!
- private ListView listView;
- private TextView textView;
- String[] items = {"111","111","111","111","111","111","111","111","111","222","111","111","111","111","55555"};
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- //获取listview
- listView = (ListView) findViewById(R.id.listview1);
- listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, items));
- // 设置监听事件
- listView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
- long arg3) {
- // TODO Auto-generated method stub
- Toast.makeText(MainActivity.this, "选择了" + "--" + arg2, 1).show();
- }
- });
- }
复制代码
基本的,这段代码就足够了。
第一步:实例化 listView
第二部:定义适配器
第三部:listView.setAdapter.
这个是简单的。
在来说个复杂的。
有一个布局歌曲xml文件:
这个布局有三个控件(多少个控件没有关系)
有一个主界面,里面有个ListView控件。
目的则是:需要这个listView中的每一行都是那个xml布局。
如何做到呢?
关键还是适配器,介绍个SimpleAdapter adapter = new SimpleAdapter(this, listDate,R.layout.activity_diarys_list, from, to); 简单适配器。
listDate是一个List<Map<String, ?>>集合
from是一个字符串数组 String[] from = {}; 里面的元素对应listDate集合中的key
to也是一个字符串数组String[] to = {}; 里面的元素对了布局xml控件中的id(R.id.xx)
其他的方式都是一样也都一样。
说道适配器,当然可以自定义:
- package com.example.myadapterdesign;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Adapter;
- import android.widget.ArrayAdapter;
- import android.widget.BaseAdapter;
- import android.widget.ListAdapter;
- import android.widget.ListView;
- import android.widget.TextView;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private ListView listView;
- private Myadapter myAdapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- listView = (ListView) findViewById(R.id.listView1);
- myAdapter = new Myadapter(getSources());
- //Adapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getSources());
- listView.setAdapter(myAdapter);
-
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- public List<String> getSources() {
- List<String> list = new ArrayList<String>();
- for(int i = 0; i < 50; i++) {
- list.add("zhangsssssss" + i);
- }
- return list;
- }
- class Myadapter extends BaseAdapter {
- List<String> list;
- public Myadapter(List<String> list){
- this.list = list;
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return list.size();
- }
-
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return list.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- View view;
- if(convertView == null) {
- view = LayoutInflater.from(MainActivity.this).
- inflate(R.layout.item, null);
- } else {
- view = convertView;
- }
- TextView textView = (TextView) view.findViewById(R.id.textView1);
- textView.setText(list.get(position));
- return view;
- }
-
- }
- }
复制代码
各位怕麻烦就用系统给的常用适配器(麻烦就是数据得按照官方给的数据形式,什么json,xml,数组感觉都是一样的只是形式),不麻烦就自己定义适配器,但是不管什么方式,都要用自己喜欢的方式,毕竟都是工具,能得心应手的使用才是王道!
|