import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;public class ShowPeopleList extends ListActivity {
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Cursor c=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        startManagingCursor(c);
        
        ListAdapter adapter=new SimpleCursorAdapter(this, 
         android.R.layout.simple_list_item_multiple_choice,
         c, new String[]{ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER},
         new int[]{android.R.id.text1,android.R.id.text2});
        setListAdapter(adapter);
        
        final ListView listView = getListView();        listView.setItemsCanFocus(false);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)
{
event.startTracking();
return true;


}
return super.onKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode,KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK && event.isTracking()&&!event.isCanceled())
{
Intent intent=new Intent();
intent.setClass(ShowPeopleList.this, SMSManager.class);
Bundle b=new Bundle();
b.putString("txt", "a");
intent.putExtras(b);
setResult(RESULT_OK, intent);
finish();

return true;
}

return super.onKeyUp(keyCode, event);
}
}
小弟写了一段显示所有联系人的代码,但是不知道如何在onKeyUp事件中获取ListView中选中的联系人的信息,请高手帮帮忙

解决方案 »

  1.   

    listView.setOnItemClickListener(new OnItemClickListener() {  public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {

    //view对象 就是你所选的那一栏,下面获取里面的子控件。当然个人还是自己写XML定义一个//ListView,便于处理.
    view.findViewById(android.R.id.text1);//应该是TextView类型的
    view.findViewById(android.R.id.text2);//应该是TextView类型的

    }
    });
      

  2.   

    private ArrayList<String> lists;
    ListView listView;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            lists=new ArrayList<String>();
            Cursor c=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
            startManagingCursor(c);
            if(c!=null){
             c.moveToFirst();
             do{
             lists.add(c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
             }while(c.moveToNext());
            }
            ListAdapter adapter=new SimpleCursorAdapter(this,  
            android.R.layout.simple_list_item_multiple_choice,
            c, new String[]{ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER},
            new int[]{android.R.id.text1,android.R.id.text2});
            setListAdapter(adapter);
            listView = getListView();
            listView.setItemsCanFocus(false);
            listView.setOnItemClickListener(this);
            listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        } @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    SparseBooleanArray a = listView.getCheckedItemPositions();
    for(int i = 0; i < lists.size() ; i++)
            {
                if (a.valueAt(i))
                {
                    Long val = listView.getAdapter().getItemId(a.keyAt(i));
                    Toast.makeText(ShowPeopleList.this, "index="+val.toString()+lists.get(i), Toast.LENGTH_SHORT).show();
                }
            } }