初识Adapter

 

首先得了解Adapter层级关系:

示例,将user对象适配到textview

 1 public class User {
 2 
 3     private String userName;
 4     private String userAddress;
 5 
 6     public User(String name, String address) {
 7         // TODO Auto-generated constructor stub
 8 
 9         userAddress = address;
10         userName = name;
11     }
12 
13     public String getUserName() {
14         return userName;
15     }
16 
17     public void setUserName(String userName) {
18         this.userName = userName;
19     }
20 
21     public String getUserAddress() {
22         return userAddress;
23     }
24 
25     public void setUserAddress(String userAddress) {
26         this.userAddress = userAddress;
27     }
28 
29 }

为user对象定制UserAdapter,并实现BaseAdapter抽象方法

 1 public class UserAdapter extends BaseAdapter {
 2 
 3     List<User> mUsers;
 4 
 5     Context mContext;
 6 
 7     public UserAdapter(Context context, List<User> users) {
 8 
 9         mContext = context;
10         mUsers = users;
11     }
12 
13     @Override
14     public int getCount() {
15         // TODO Auto-generated method stub
16         return mUsers.size();
17     }
18 
19     @Override
20     public Object getItem(int position) {
21         // TODO Auto-generated method stub
22         return mUsers.get(position);
23     }
24 
25     @Override
26     public long getItemId(int position) {
27         // TODO Auto-generated method stub
28         return position;
29     }
30 
31     @Override
32     public View getView(int position, View convertView, ViewGroup parent) {
33         // TODO Auto-generated method stub
34         
35         convertView = LayoutInflater.from(mContext).inflate(R.layout.user_item, null);
36         TextView textView1 = (TextView) convertView.findViewById(R.id.textView1);
37         TextView textView2 = (TextView) convertView.findViewById(R.id.textView2);
38         textView1.setText(mUsers.get(position).getUserName());
39         textView2.setText(mUsers.get(position).getUserAddress());
40         
41         return convertView;
42     }
43 
44 }


在主activity里调用适配器,注意,onClickListener对Spinner不适用,调用会报错

 1 protected void onCreate(Bundle savedInstanceState) {
 2         super.onCreate(savedInstanceState);
 3         setContentView(R.layout.activity_form);
 4 
 5         // showSpinner();
 6         showUserSpinner();
 7     }
 8 
 9     public void showUserSpinner() {
10         Spinner spinner = (Spinner) findViewById(R.id.spinner3);
11         ArrayList<User> users = new ArrayList<User>();
12         users.add(new User("Jewelinsie", "重庆"));
13         users.add(new User("Chung Shurecy", "内江"));
14 
15         UserAdapter userAdapter = new UserAdapter(this, users);
16         spinner.setAdapter(userAdapter);
17         
18         spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
19 
20             @Override
21             public void onItemSelected(AdapterView<?> parent, View view,
22                     int position, long id) {
23                 // TODO Auto-generated method stub
24                 TextView textView2 = (TextView)view.findViewById(R.id.textView2);
25                 Log.i(TAG, "address is "+textView2.getText().toString());
26             }
27 
28             @Override
29             public void onNothingSelected(AdapterView<?> parent) {
30                 // TODO Auto-generated method stub
31                 
32             }
33         });
34 
35     }

Layout配置如下:

 1     <TextView
 2         android:id="@+id/textView1"
 3         android:layout_width="wrap_content"
 4         android:layout_height="wrap_content"
 5           android:layout_margin="10dp"
 6           android:drawableLeft="@drawable/p16"
 7         />
 8 
 9     <TextView
10         android:id="@+id/textView2"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13          android:layout_margin="10dp"
14         />

 实现效果,样式图片虽然丑了点,但是在功能上是成功的。

posted @ 2014-12-24 13:14  iRac  阅读(201)  评论(0)    收藏  举报