ListView控件使用

在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

1、ArrayAdapter

比较简单,就是单行字符串的,这里转载个例子:

/**
 * @author allin
 *
 */
public class MyListView extends Activity {
 
    private ListView listView;
    //private List<String> data = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
         
        listView = new ListView(this);
        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
        setContentView(listView);
    }
     
     
     
    private List<String> getData(){
         
        List<String> data = new ArrayList<String>();
        data.add("测试数据1");
        data.add("测试数据2");
        data.add("测试数据3");
        data.add("测试数据4");
         
        return data;
    }
}


2、SimpleAdapter

扩展性最好的适配器,建议自己写一个demo感受下,以下为验证的一个demo(不需要响应按钮):

public class MainActivity extends AppCompatActivity  implements View.OnClickListener{

    private Button addDataBtn;
    private Button delDataBtn;

    private ListView mainListView;
    private List<Map<String, Object>> mainData;
    private SimpleAdapter adapter;

    private Random random;
    private int i;


    //创建ViewList并初始化数据和控件
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        random = new Random();
        i = 0;

        addDataBtn = (Button) findViewById(R.id.addData);
        delDataBtn = (Button) findViewById(R.id.delData);
        addDataBtn.setOnClickListener(this);
        delDataBtn.setOnClickListener(this);

        mainData =  new ArrayList<Map<String, Object>>(); //创建ViewList的数据

        adapter = new SimpleAdapter(this, mainData,  //将数据注册到adapter
                R.layout.vlistitem_main,    //自定义的ViewList项目
                new String[]{"title", "info", "img"},   //注册数据标签
                new int[] {R.id.title1, R.id.info1, R.id.img});     //数据标签对应的ViewList中的控件ID,需要与上面一行一一对应;

        mainListView = (ListView) findViewById(R.id.listView);
        mainListView.setAdapter(adapter);       //设置适配器
<span style="white-space:pre">	</span><pre style="background-color: rgb(255, 255, 255); font-family: 宋体; font-size: 9pt;"><span style="color:#660e7a;"><strong><span style="white-space:pre">	</span>mainListView</strong></span>.setOnItemClickListener(<span style="color:#000080;"><strong>new </strong></span>AdapterView.OnItemClickListener() {

    <span style="white-space:pre">		</span><span style="color:#808000;">@Override
</span><span style="color:#808000;">    <span style="white-space:pre">		</span></span><span style="color:#000080;"><strong>public void </strong></span>onItemClick(AdapterView<?> arg0, View arg1, <span style="color:#000080;"><strong>int </strong></span>arg2,
                           <span style="color:#000080;"><strong>long </strong></span>arg3) {
        <span style="white-space:pre">	</span>Toast.<span style="font-style:italic;">makeText</span>(getApplicationContext(), <span style="color:#008000;"><strong>"你点击了第" </strong></span>+arg2 + <span style="color:#008000;"><strong>"行!"</strong></span>, Toast.<span style="color:#660e7a;"><strong><em>LENGTH_LONG</em></strong></span>).show();<span style="color:#808080;"><em>
</em></span><span style="color:#808080;"><em>    <span style="white-space:pre">		</span></em></span>}
<span style="white-space:pre">	</span>});
} //向ViewList数据中增加条目 private void addData(List<Map<String, Object>> data){ int tmpint = random.nextInt(100); i++; Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "G" + tmpint); map.put("info", "google " + tmpint); map.put("img", android.R.drawable.btn_default); data.add(map); } //随机删除ViewList数据中的条目 private void delData(List<Map<String, Object>> data){ if(i!=0) { int randomInt = random.nextInt(i); Toast.makeText(this, "i=" + i + ";randomInt=" + randomInt + ";", Toast.LENGTH_LONG).show(); data.remove(randomInt); i--; } } //增减数据条目按钮回调函数 @Override public void onClick(View v) { switch (v.getId()) { case R.id.addData: addData(mainData); adapter.notifyDataSetChanged(); //数据改变后,通知ViewList更新数据; break; case R.id.delData: delData(mainData); adapter.notifyDataSetChanged(); //数据改变后,通知ViewList更新数据; break; default: break; } }}


3、SimpleCursorAdapter

(未完待续)

你可能感兴趣的:(ListView控件使用)