1604 week1 学习总结

来源:互联网 发布:抽风散热器 知乎 编辑:程序博客网 时间:2024/05/22 15:05
week 1 总结


1. Common Layout


1)RelativeLayout


layout_below 位于某控件之下
layout_toLeftOf / layout_toRightof   与某控件 左侧/右侧
layout_alignLeft / Top / Right / Bottom   与某控件 左/上/右/下
layout_alignBaseline  与某控基线对齐


layout_alignParentLeft     与父级对应向左 
layout_alignParentTop      与父级对应向上
layout_alignParentRight    与父级对应向右
layout_alignParentBottom   与父级对应向下


layout_centerInparent       在父级居中
layout_centerHorizontal     水平居中
layout_centerVertical       垂直居中             ----- 取值 true  false  




2) LinearLayout


必须设置 orientation 属性:  horizontal / vertical
layout_gravity :left / right / top / bottom / center_horinzontal /center_vertical / center
水平线性布局,垂直方向的对齐方式有效
垂直线性布局,水平方向的对齐方式有效
layout_weight 权重  



3) FrameLayout


FrameLayout, 按层,顶层显示,底层隐藏


4) GridLayout


orientation 必要 horizontal /  vertical
columnCount 最大列数
rowCount 最大行数

layout_column 位于第几列,取值为列的序号
layout_row    位于第几行,取值为行的序号
layout_columnSpan 合并几列,取值为合并的数量
layout_rowSpan  合并几行,取值为行的数量
layout_gravity 对齐方式 fill_vertical fill_horizontal 可行的情况下扩大该控件


2.switch


1)textswitcher


设置view工厂 :textSwitcher . setFactory()


设置view动画 : textSwitcher .setInAnimation ()


设置默认图片 :  imageSwitch .setCurrentText(String.valueOf)


在xml里加on click, 在mainActivity 中 实现 public void onClick(View v){ textSwitcher.setText(String.valueOf())  }


继承 ViewFactory接口, 实现 makeView 抽象方法




2)imageswitcher


设置view工厂 : imageSwitch . setFactory()

设置view动画 : imageSwitch .setInAnimation ()

设置默认图片 : imageSwitch .setImageResource()


在xml里加on click, 在mainActivity 中 实现 public void onClick(View v){ textSwither.setImageResource(res[count]); }

继承 ViewFactory接口, 实现 makeView 抽象方法 ImageView tv=new ImageView(this);  tv.setScaleType(ScaleType.CENTER); 




3. Adapter Layout  ----  ListView




步骤方式1: 


1.获得ListView
 
                        ListView lsv=(ListView) findViewById(R.id.lsvId);

2.构建Adapter
 
                        ArrayAdapter<String> adapter= new ArrayAdapter<String>(               第一种构造方法
this,                                      //context
       android.R.layout.simple_list_item_1,       //resource
       new String[]{"北京","深圳","上海"});

                        3.ListView关联Adapter
       lsv.setAdapter(adapter);




步骤方式2: 


1.获得ListView
ListView lsv=(ListView) findViewById(R.id.lsvId);

2.构建Adapter

ArrayAdapter<String> adapter= new ArrayAdapter<String>(               第二种构造方法
this,                                   //context
R.layout.list_item_02,                  //resource
R.id.text01,                            //textviewId
list);

                        3.ListView关联Adapter
                        lsv.setAdapter(adapter);


步骤方式3:


1.获得ListView
ListView lsv=(ListView) findViewById(R.id.lsvId);

2.构建Adapter
ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(                    第三种构造方法               
this, //Context
R.array.itemarray,//textArrayResId (res/values/strings.xml) 静态调用
android.R.layout.simple_list_item_1);//textViewResId


3.ListView关联Adapter
lsv.setAdapter(adapter);


itemarray 中是在 String xml 写明: 如下,

<string-array name="itemarray">
      <item>我的行程</item> 
                         <item>我的订单</item> 
                         <item>我的设置</item> 
                         <item>我的钱包</item> 
                         </string-array>




4. SimpleAdapter :

1)先定义数组,将数组中的数据取出来给ListView显示
private Object [][]datas={
{R.drawable.png_01,"宝马"},
{R.drawable.png_02,"奔驰"}




2)定义集合
private List<Map<String,Object>> brands=
new ArrayList<Map<String,Object>>(); 



3)定义加载数据方法loadDatasFromNet(内涵循环)


private void loadDatasFromNet() {
       for(int i=0;i<datas.length;i++){
Map<String,Object> map=new HashMap<String, Object>();
map.put("logo", datas[i][0]);
map.put("name", datas[i][1]);

brands.add(map);         

}
       }


4) onCreate内模拟加载器


       loadDatasFromNet();




5)构建ListView 


ListView lsv=new ListView(this);


6)构建适配器对象


SimpleAdapter adapter=
  new SimpleAdapter(this,
       brands,                                          //data(List<? Map<String,?>>)
       R.layout.list_item_02,                           //resource (item view 模板)
       new String[]{"logo","name"},                     //map中的key
       new int[]{R.id.imageView1,R.id.textView1});      //resource中的viewId


7)关联适配器


       lsv.setAdapter(adapter);


                8)添加监听器()实现接口


       lsv.setOnItemClickListener(this);


                9)将listview添加到activity对应的window窗口


                setContentView(lsv);                              //如果一开始注释了


                10)实现接口,重写方法


       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<?,?> map=(Map<?,?>) parent.getItemAtPosition(position);
Toast.makeText(this, map.get("name"). toString(),0).show();
         }
                }




5. BaseAdapter :


* 添加一个构造方法(仿照activity中对象构建)

* 完成前三个方法(参考ArrayAdapter)




创建 CityAdapter 类 继承 BaseAdapter 

private Context context;
private int resource;
private List<City> citys;


1) 构造方法通常用于对属性初始化

public CityAdapter(Context context,int resource,List<City> citys) {
this.context=context;
this.resource=resource;
this.citys=citys;
    mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);




2) 此方法要返回数据集中数据的个数*/


public int getCount() {
return citys.size();
}

3) 返回数据集中指定位置的数据*/

public Object getItem(int position) {
return citys.get(position);
}


4) 一般返回item对象的位置*/

public long getItemId(int position) {
return position;
}

5)此方法用于构建item(包饺子)


    *listview中每显示一个item就会调用一次此方法

public View getView(int position, View convertView, ViewGroup parent) {


Log.i("TAG", "getView");

                1)item view (饺子皮对象)
mInflater对象参考resource模板构建的view对象返回值为resource模板中的根元素
View v=mInflater.inflate(resource, parent, false);                     // 构建一个View


2)item data (饺子馅)
City c=citys.get(position);


3)set item data to item view(包饺子,对号入座)


3.1)获得item view 中的具体view对象
ImageView logoIV= (ImageView) v.findViewById(R.id.imageView1);
TextView nameTV= (TextView) v.findViewById(R.id.textView1);


3.2)将city中的数据放到对应位置
logoIV.setImageURI(Uri.fromFile(new File(c.getLogo())));
nameTV.setText(c.getName());
return v;                                        //包好的饺子

}




* 写个City类, Logo Name 属性, set get 方法, 构造方法
* MainActivity 部分


     
        String cityStrs[][]={                                  //假设此数据来自网络
       {"/mnt/sdcard/png_01.png","北京"},
       {"/mnt/sdcard/png_02.png","上海"}
       };                                                      //DDMS/File浏览器/mnt/sdcard
//将网络中的数据封装到此集合
private List<City> citys=new ArrayList<City>();
         
      private void loadDataFromNet(){
                for(int i=0;i<cityStrs.length;i++){
           City c=new City(cityStrs[i][0],cityStrs[i][1]);
        
                citys.add(c);
         }
    }


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 -加载数据
loadDataFromNet();


         -获得ListView
 ListView lsv=(ListView) findViewById(R.id.lstId);


         -构建适配器对象
CityAdapter adapter= new CityAdapter(
                 this,
R.layout.list_item_02,
citys);

-关联适配器
lsv.setAdapter(adapter);


}
}


6. ExpandableListView :


               1)获得ExpandableListView对象
ExpandableListView lsv=(ExpandableListView) findViewById(R.id.elsvId);

               2)构建适配器对象
      ExpandableListAdapter adapter=new ExpAdapter();

               3)关联适配器对象
      lsv.setAdapter(adapter);




               4.sv.setOnChildClickListener(onChildClickListener);
       

      -


      private String[] groups={"A","B","C"};                 -----此数组中存储的是具体分组



      private String[][]childs={                             -----此数组中存储每组中的具体数据
{"A1","A2"},
{"B1","B2","B3"},
{"C1","C2"}
       };




              5. 写此adapter相当于写了两个BaseAdapter的子类


       class ExpAdapter extends BaseExpandableListAdapter{

@Override
public int getGroupCount() {                          ------ 此方法要返回分组的个数
return groups.length;
}
       
@Override
public int getChildrenCount(int groupPosition) {      ------ 返回每个分组中子元素的个数
return childs[groupPosition].length; 
}


      
@Override                                          
public Object getGroup(int groupPosition) {            ------- 此方法类似BaseAdapter的getItem方法,
                                                                               要返回指定位置的item数据      
return groups[groupPosition];
}                                                     
        

@Override                                                      
public Object getChild(int groupPosition, int childPosition) {   ----- 此方法类似BaseAdapter的getItem方法,
                                                                                       要返回指定位置的childs的item数据
return childs[groupPosition][childPosition];
}



@Override
public long getGroupId(int groupPosition) {                -------- 类似baseAdapter的getItemId方法
return groupPosition;
}


@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}


@Override
public boolean hasStableIds() {                            --------- 此方法的返回值表示item的id是否是稳定的,
         return false;                                              假如item的id值可能会变化它就是不稳定的,
                                                                    返回值false表示不稳定

}


@Override  /**类似baseAdapter的getView方法,用于包饺子(构建item对象)


public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

//1.item view

TextView v=(TextView) View.inflate(MainActivity.this,
android.R.layout.simple_expandable_list_item_1,null);

//2.item data

String data=groups[groupPosition];


//3.set item data to item view

v.setText(data);


return v;

}

/**类似baseAdapter的getView方法,用于包饺子(构建item对象)*/
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
ViewGroup parent) {
//1.item view
TextView v=(TextView) View.inflate(MainActivity.this,
android.R.layout.simple_list_item_1,null);


//2.item data
String data=childs[groupPosition][childPosition];


//3.set item data to item view
v.setText(data);
return v;
}


/**此方法的返回值决定ExpandableListview中的子元素是否可以点击,
* 返回值false表示不可点击*/


@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
       }

          }












7. Spinner :




       private String groups[]={"北京","上海"};                                 ------ groups []


 private String childs[][]={                                              ------ childs [] []
{"朝阳","海淀","西城"},
{"浦东","虹桥"}
        };

 private List<String> childList=new ArrayList<String>();

 private Spinner groupSpinner;

 private Spinner childSpinner;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
                  //spinner01


              setGroupSpinner();


//spinner02


      setChildSpinner();


}
   
private void setGroupSpinner() {


    1)获得Spinner对象


groupSpinner = (Spinner) findViewById(R.id.spinner1);


      2)构建适配器对象


ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,groups);


    3)关联适配器对象


groupSpinner.setAdapter(adapter);


  4)添加监听器
groupSpinner.setOnItemSelectedListener(this);
       }


       private ArrayAdapter<String> childAdapter;


       private void setChildSpinner() {
childList.addAll(Arrays.asList(childs[0]));




                1)获得Spinner对象


childSpinner = (Spinner) findViewById(R.id.spinner2);


                2)构建适配器对象


childAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,childList);


                 3)关联适配器对象


childSpinner.setAdapter(childAdapter);
   
                 4)添加监听器
        }


        @Override
        public boolean onCreateOptionsMenu(Menu menu) {


// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;
       }


        @Override
        public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {

                //修改Spinner中的数据

                 childList.clear();
childList.addAll(Arrays.asList(childs[position]));


//刷新Spinner02
childAdapter.notifyDataSetChanged();

            }









































0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝号注册不了怎么办 appleid密码忘了怎么办 蘑菇街用白富美后忘记账号怎么办 不知道宽带账号怎么办 上网用户名忘了怎么办 别人借淘宝号怎么办 不知道ipad密码怎么办 捡的ipad密码怎么办 12306注册名已存在怎么办 忘记网银用户名怎么办 登录用户名忘了怎么办 网银登录错误怎么办 路由器账号忘了怎么办 忘记宽带账号密码怎么办 12123被注册过怎么办 w10不能创建账户怎么办 忘记xp登录密码怎么办 华硕密码忘记了怎么办 电脑账户已停用怎么办 鼠标灯亮不动怎么办 电脑用户名被停用怎么办 电脑截图不清晰怎么办 win10电脑磁盘空间不足怎么办 我的用户名忘记怎么办 12306用户名密码忘记怎么办 电脑开机要密码怎么办 三星账户忘记了怎么办 电脑账户忘记了怎么办 电脑启动要密码怎么办 电脑用户密码忘记了怎么办 微信语音听不懂怎么办 法院迟迟不立案怎么办 dns连不上网怎么办 监控显示无硬盘怎么办 电脑获取不到dns怎么办 打游戏cpu过高怎么办 注册了公司没做账怎么办 工行u盾没电了怎么办 属狗和属鸡相害怎么办 被别人说老实怎么办 牛手术后低烧怎么办