“统领大局”的ListView

本文介绍如何在Android应用中实现ListView组件,并演示了使用SimpleAdapter来填充数据的过程。此外,还展示了如何为ListView设置点击和长按事件。

首先声明,该文章为自己学习笔记,仅供参考,不保证所有文字均描述得当,欢迎指出不足和错误之处,再此感谢您的关注和阅读。如果有需要代码的可以留言,和我联系。

1.ListView的显示

通过这个例子,我们就可以将ListView显示出来了,但是仅仅是将ListView显示出来,而什么也做不了。

1.新建一个mainlist_items用于对ListView进行布局
2.在KeroApiDemosActivity.java控制xml里面的控件,其中用到了一个simpleadapter下一天准备写一下

KeroApiDemosActivity.java

package com.example.android.apis;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class KeroApiDemosActivity extends Activity {
    /** Called when the activity is first created. */
	private ListView listview;
	//声明一个ListView的变量导入包android.widget.ListView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //绑定mainListView
        listview = (ListView)findViewById(R.id.mainListView);
        //listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
        ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
        for(int i=0;i<10;i++)  
        {  
            HashMap<String, Object> map = new HashMap<String, Object>();  
            map.put("ItemImage", R.drawable.ic_launcher);//图像资源的ID  
            map.put("ItemTitle", "Level "+i);  
            map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! ");  
            listItem.add(map);  
        }  
      //生成适配器的Item和动态数组对应的元素
        SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源   
            R.layout.mainlist_items,//ListItem的XML实现  
            //动态数组与ImageItem对应的子项          
            new String[] {"ItemImage","ItemTitle", "ItemText"},   
            //ImageItem的XML文件里面的一个ImageView,两个TextView ID  
            new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}  
        );
        listview.setAdapter(listItemAdapter);
    }

    
}
mainlist_items.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
	android:id="@+id/RelativeLayout01" 
	android:layout_width="fill_parent" 
	xmlns:android="http://schemas.android.com/apk/res/android" 
	android:layout_height="wrap_content" 
	android:paddingBottom="4dip" 
	android:paddingLeft="12dip"
	android:paddingRight="12dip">
<ImageView 
	android:paddingTop="12dip"
	android:layout_alignParentRight="true"
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:id="@+id/ItemImage"
	/> 
<TextView 
    android:text="TextView01" 
    android:layout_height="wrap_content" 
    android:textSize="20dip" 
    android:layout_width="fill_parent" 
    android:id="@+id/ItemTitle"
    />
<TextView 
	android:text="TextView02" 
	android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:layout_below="@+id/ItemTitle" 
	android:id="@+id/ItemText"
	/>
</RelativeLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView 
        android:id="@+id/mainListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
</LinearLayout>

看下效果图

2.操作这个ListView

ListView主要有以下几种操作

1.单击响应(主要用于弹出一个新的Activity)

2.长按响应(比如删除或者添加条目等等)


        //点击响应(单击)
        listview.setOnItemClickListener(new OnItemClickListener() {  
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				 setTitle("点击第"+arg2+"个项目"); 
				 Toast.makeText(KeroApiDemosActivity.this, "您点击了第"+arg2+"个项目", Toast.LENGTH_SHORT).show();
			} 
        }); 
        //长按响应
        listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  
			@Override
			public void onCreateContextMenu(ContextMenu menu, View arg1,
					ContextMenuInfo arg2) {
				// TODO Auto-generated method stub
				menu.setHeaderTitle("长按弹出菜单");     
                menu.add(0, 0, 0, "添加一个List");
                menu.add(0, 1, 0, "删除一个List");
				
			}  
        }); 
    }
    //这里有个印象就好,菜单的响应
    @Override  
    public boolean onContextItemSelected(MenuItem item) {  
    	switch (item.getItemId())
    	{
    	case 0:
    		Toast.makeText(KeroApiDemosActivity.this, "菜单第"+item.getItemId()+"项添加一个List", Toast.LENGTH_SHORT).show(); 
    		break;
    	case 1:
    		Toast.makeText(KeroApiDemosActivity.this, "菜单第"+item.getItemId()+"项删除一个List", Toast.LENGTH_SHORT).show(); 
    		break;
    	}
        return super.onContextItemSelected(item);  
    }  

好了,大概就这样,这一篇就到这里。

最后写了一些代码,把整个项目的框架打出来了,以后就这样填充吧。看一下效果~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值