Android_适配器

视图-适配器-数据源

1.ArrayAdapter 数组作为数据源,填充的是ArrayAdapter  

public class Example extends ListActivity{
      
String[] sex = new String(){"男",“女”}//数据源

ArrayAdapter<String> adapter;//数组适配器
public voidonCreate(Bundle SavedInstanceState){ super.onCreate(SavedInstanceStat);

adapter=newArrayAdapter<String(this.android.R.Layout.Simple_List_Item_1,sex); //数据源-->适配器 this.setAdapter(adapter);// 视图<--适配器
}
}

  

 

2.SimpleAdapter

ListView list = (ListView)findViewById(R.id.MyListView);        
                     //生成动态数组,并且转载数据
                      ArrayList<HashMap<String, String>> mylist = newArrayList<HashMap<String, String>>();
                      for(int i=0;i<30;i++)
                              {
                                       HashMap<String, String>map = new HashMap<String, String>();
                                       map.put("ItemTitle","This is Title.....");
                                       map.put("ItemText","This is text.....");
                             mylist.add(map);
                             }
                    //生成适配器,数组ListItem
                      SimpleAdapter mSchedule = new SimpleAdapter(
           
            this, //视图
            mylist,//数据来源

R.layout.my_listitem,//ListItem的XML实现 //动态数组与ListItem对应的子项 new String[]{"ItemTitle", "ItemText"}, //ListItem的XML文件里面的两个TextView ID
             new int[] {R.id.ItemTitle,R.id.ItemText}); //添加并且显示 list.setAdapter(mSchedule);视图<--适配器
}

3.SimpleCursorAdapter

String uriString = “content://contacts/people/”;
                     Cursor myCursor =managedQuery(Uri.parse(uriString), null, null, null, null);
          String[] fromColumns = new String[]{People.NUMBER, People.NAME};
                    int[] toLayoutIDs = new int[] {R.id.nameTextView, R.id.numberTextView};
                   SimpleCursorAdapter myAdapter;
                   myAdapter=newSimpleCursorAdapter(this,R.layout.simplecursorlayout,myCursor,fromColumns,
                   toLayoutIDs);//传入当前的上下文、一个layout资源,一个游标和两个数组:一个包含使用的列    
                   //的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数 
                   据值。

                   myListView.setAdapter(myAdapter);

 

  

 

4.BaseAdpter

public class ImageAdapter extendsBaseAdapter {
                         private Context mcontext;                                                  
}; //构造函数里面有两个参数,一个是数据的来源,另一个是上下文。 public ImageAdapter(Integer[] imgIds,Context c){ mcontext=c; imageIds=imgIds; } publicint getCount() { // TODO Auto-generated method stub return imageIds.length; } publicObject getItem(int position) { // TODO Auto-generated method stub return null; } publiclong getItemId(int position) { // TODO Auto-generated method stub return position; } //主要工作是做在这里,可以自定义布局,在这里我就不多说了

//ViewHolder使用

public View getView(int position, View convertView, ViewGroup parent) { 
         if (convertView == null) { 
             convertView = LayoutInflater.from(context) 
                     .inflate(R.layout.good_list_item, null, false); 
         } 
   
         ViewHolder mViewHolder = ViewHolder.get(convertView); 
        TextView price = mViewHolder.getView(R.id.price); 
        //...其他getView 
   
         return convertView; 
     } 
}

//ViewHolder设计

public class ViewHolder{ 
   
     private final SparseArray<View> views; 
     private View convertView; 
  
      private ViewHolder(View convertView){ 
         this.views = new SparseArray<View>(); 
         this.convertView = convertView; 
         convertView.setTag(this); 
     } 
  
     public static ViewHolder get(View convertView){ 
         if (convertView == null) { 
             return new ViewHolder(convertView); 
         } 
         ViewHolder existedHolder = (ViewHolder) convertView.getTag(); 
         return existedHolder; 
    } 
  
     public <T extends View> T getView(int viewId) { 
         View view = views.get(viewId); 
         if (view == null) { 
             view = convertView.findViewById(viewId); 
             views.put(viewId, view); 
         } 
         return (T) view; 
     } 
 } 

 

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过客非归

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值