zoukankan      html  css  js  c++  java
  • 初识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         />

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

  • 相关阅读:
    【组合数学】AGC036C
    【数位贪心】loj#530. 「LibreOJ β Round #5」最小倍数
    【概率dp】vijos 3747 随机图
    【线段树 经典技巧】10.7序列绝对值
    【杂题】10.7爬树
    【组合数学 思维题】10.6种树
    【换根dp】9.22小偷
    【高维前缀和】8.15B. 组合数
    【技巧 dp】1566: [NOI2009]管道取珠
    【经典dp 技巧】8.13序列
  • 原文地址:https://www.cnblogs.com/izhanjun/p/4182175.html
Copyright © 2011-2022 走看看