Android中Spinner下拉列表(使用自定义Adapter实现,显示数据取自联系人数据库)
2012-07-04 13:19
1061 查看
1.新建自定义的弹出窗口布局文件(Item.XML)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/textViewName" android:layout_width="109dp" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/textViewNumber" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout>
2.建立自己的适配器类 MyAdapter.java
package com.contactClient; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.data.Person; public class MyAdapter extends BaseAdapter { private Context mContext; private List<Person> mList; public MyAdapter(Context context, List<Person> list) { this.mContext = context; this.mList = list; } @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } @Override public long getItemId(int index) { // TODO Auto-generated method stub return index; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LayoutInflater _LayoutInflater = LayoutInflater.from(mContext); convertView = _LayoutInflater.inflate(R.layout.item, null); if (convertView != null) { TextView _TextView1 = (TextView) convertView .findViewById(R.id.textViewName); TextView _TextView2 = (TextView) convertView .findViewById(R.id.textViewNumber); _TextView1.setText(mList.get(position).getPersonName()); _TextView2.setText(mList.get(position).getPersonNumber()); } return convertView; } }
3.在DemoContactClientActivity.java中创建自定义的MyAdapter并将spinner和MyAdapter绑定
package com.contactClient; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.PhoneLookup; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; import com.data.Person; public class DemoContactClientActivity extends Activity { public List<Person> contactList; public Spinner mSpinner; public boolean isContactReady = false; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); contactList = new ArrayList<Person>(); //Open the thread to get contact information ContactThread getContactTh = new ContactThread(); getContactTh.start(); //Set the adapter to spinner mSpinner = (Spinner)findViewById(R.id.spinner1); while (true) { if (!isContactReady) continue; MyAdapter mAdapter = new MyAdapter(this, contactList); mSpinner.setAdapter(mAdapter); break; } mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); } class ContactThread extends Thread{ @Override public void destroy() { // TODO Auto-generated method stub super.destroy(); isContactReady=false; } @Override public void run() { // TODO Auto-generated method stub super.run(); ContentResolver cr = getContentResolver(); Cursor cursor = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, "sort_key asc"); while (cursor.moveToNext()) { // 取得联系人名字 int nameFieldColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME); String name = cursor.getString(nameFieldColumnIndex); // 取得联系人的号码 int numberIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); String number = cursor.getString(numberIndex); Person p = new Person(name,number); contactList.add(p); } isContactReady= true; cursor.close(); } } }
4.最后不要忘记加上权限(很重要)
<uses-permission android:name="android.permission.READ_CONTACTS"/>
程序运行结果如图所示:
相关文章推荐
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android常用控件—Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- 【转】Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现) .
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)