Android_适配器

来源:互联网 发布:货车找活都用什么软件 编辑:程序博客网 时间:2024/06/09 19:52
视图-适配器-数据源

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;      }  }