ListView和各种Adapter的使用

155 篇文章 0 订阅
79 篇文章 0 订阅
1,和最简单的ArrayAdapter的使用:

package com.wt.app;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;

public class App extends ListActivity {
	String[] array={/*"aaa","bbb","ccc"*/};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //为空时的显示内容
        this.getListView().setEmptyView(findViewById(R.id.empty));
        
        ListAdapter adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,array);
        this.setListAdapter(adapter);
    }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView 
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    />
    
<TextView 
	android:id="@+id/empty"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical"
    android:text="Nothing"
    />
</LinearLayout>


2,和SimpleAdapter的使用:

package com.wt.app;

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

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class App extends Activity {
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //绑定Layout里面的ListView
        ListView list = (ListView) findViewById(R.id.ListView01);
        
        //生成动态数组,加入数据
        ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
        int[] images=new int[]{android.R.drawable.ic_menu_add,android.R.drawable.ic_menu_delete,android.R.drawable.ic_menu_edit,android.R.drawable.ic_menu_view};
        for(int i=0;i<4;i++)
        {
        	HashMap<String, Object> map = new HashMap<String, Object>();
        	map.put("itemImage", images[i]);//图像资源的ID
        	map.put("itemTitle", "Title "+i);
        	map.put("itemText", "this is Text "+i);
        	listItem.add(map);
        }
        //生成适配器的Item和动态数组对应的元素
        SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源 
            R.layout.row,//ListItem的XML实现
            //动态数组与ImageItem对应的子项        
            new String[] {"itemImage","itemTitle", "itemText"}, 
            //ImageItem的XML文件里面的一个ImageView,两个TextView ID
            new int[] {R.id.itemImage,R.id.itemTitle,R.id.itemText}
        );
       
        //添加并且显示
        list.setAdapter(listItemAdapter);
        //添加点击
        list.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				setTitle("点击第"+arg2+"个项目");
			}
		});
        
      //添加长按点击
        list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
			
			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
				menu.setHeaderTitle("长按菜单-ContextMenu");   
				menu.add(0, 0, 0, "弹出长按菜单0");
				menu.add(0, 1, 0, "弹出长按菜单1");   
			}
		}); 
    }
	
	//长按菜单响应函数
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); 
		return super.onContextItemSelected(item);
	}
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<ListView android:layout_width="wrap_content"   
          android:layout_height="wrap_content"   
          android:id="@+id/ListView01"  
    />  
</LinearLayout>\

row.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:paddingTop="4dip" 
	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:layout_height="wrap_content" 
    android:textSize="20dip" 
    android:layout_width="fill_parent" 
    android:id="@+id/itemTitle"
    />
<TextView 
	android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:layout_below="@+id/itemTitle" 
	android:id="@+id/itemText"
	/>
</RelativeLayout>


3,和SimpleCursorAdapter的使用:

package com.wt.app;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.telephony.PhoneNumberUtils;
import android.telephony.gsm.SmsManager;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;

public class App extends Activity {
	private static final String TAG="App";
	ListView listView;
	ListAdapter adapter;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.main);
        LinearLayout linearLayout=new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout.setBackgroundColor(Color.BLACK);
        LinearLayout.LayoutParams param=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        
        listView=new ListView(this);
        listView.setBackgroundColor(Color.BLACK);
        
        linearLayout.addView(listView,param);
        
        this.setContentView(linearLayout);
        
        //从数据库获取联系人姓名和电话号码
        Cursor cur=this.getContentResolver().query(People.CONTENT_URI,null, null,null,null);
        adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cur,new String[]{People.NAME,People.NUMBER},new int[]{android.R.id.text1,android.R.id.text2});
        this.startManagingCursor(cur);
        listView.setAdapter(adapter);
        //listView.setEmptyView(findViewById(R.id.empty));
        
        listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub
				//openToast("滚动到:"+arg0.getSelectedItemId());
				//短信发送
//				PendingIntent pi = PendingIntent.getActivity(App.this,0,new Intent(App.this,App.class),0);
//				SmsManager sms = SmsManager.getDefault();  
//				sms.sendTextMessage("5554", null, "message", pi, null); 
			}

			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
        	
        });
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){

			public void onItemClick(AdapterView<?> arg0, View arg1, int position,
					long arg3) {
				// TODO Auto-generated method stub
//				String[] names=((CursorWrapper)listView.getItemAtPosition(position)).getColumnNames();
				//从指针的封装类中获得选中项的电话号码并拨号
				CursorWrapper wrapper=(CursorWrapper)listView.getItemAtPosition(position);
				int columnIndex=wrapper.getColumnIndex(People.NUMBER);
				if(!wrapper.isNull(columnIndex)){
					String number=wrapper.getString(columnIndex);
					Log.d(TAG,"number="+number);
	//				//判断电话号码的有效性
					if(PhoneNumberUtils.isGlobalPhoneNumber(number)){
						Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel://"+ number));
						startActivity(intent);
					}
				}
/*
//直接拨号,需要CALL_PHONE权限
				Intent intent=new Intent(Intent.ACTION_CALL);
                Cursor c=(Cursor)adapter.getItem(position);
                long phoneID=c.getLong(c.getColumnIndex(People.PRIMARY_PHONE_ID));
                intent.setData(ContentUris.withAppendedId(android.provider.
                                             Contacts.Phones.CONTENT_URI, phoneID));
                startActivity(intent);
                */

			}
        });
      //添加长按点击,弹出快显菜单
        listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
			
			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
				menu.setHeaderTitle("你想要...?").setHeaderIcon(R.drawable.icon); 
				menu.add(0, 0, 0, "删除").setIcon(R.drawable.icon);
				menu.add(0, 1, 0, "修改").setIcon(R.drawable.icon);   
			}
		});
    }
  //长按菜单响应函数
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		//setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); 
		openToast("你点击了"+item.getTitle());
		return super.onContextItemSelected(item);
	}
    private void openToast(String str){
    	Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
    }
}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.wt.app"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".App"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <!-- 点击拨号时,询问调用默认的程序还是调用本程序拨号 -->
		   <intent-filter> 
			   <action android:name="android.Intent.Action.CALL_BUTTON" />
			   <category android:name="android.Intent.Category.DEFAULT" /> 
		   </intent-filter> 
        </activity>

    </application>
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-sdk android:minSdkVersion="3" />

</manifest> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值