安卓学习文档
http://www.android-doc.com/guide/topics/ui/layout/relative.html
1.安卓像素单位为dp
2.ListView(GridView)
想用ListView(GridView) 需要使用适配器
适配器:是java的23种设计模式中的一种,适配器模式
在android中适配是指安卓提供的一些类,使用继承,重写里面方法
BaseAdapter ArrayAdapter
作用:对于特定的需要数据处理的布局,把得到的数据按照适配器规定方法放入到界面
当布局页面需要根据数据的交互需要使用ListView GridView
例:GridView中加入图片
public class Main4Activity extends AppCompatActivity {
int[] img={R.drawable.androidfilemanager,R.drawable.angrybirds,R.drawable.calculator,R.drawable.fruit,R.drawable.rope};
private GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
gridView= (GridView) findViewById(R.id.gridView);
gridView.setAdapter(new MyAdapter());
}
class MyAdapter extends BaseAdapter{
//获取数据个数,数据个数决定控件个数,决定了调用多少次getView
@Override
public int getCount() {
return img.length;
}
//获取数据
@Override
public Object getItem(int position) {
return img[position];
}
//获取位置
@Override
public long getItemId(int position) {
return position;
}
//得到控件
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView view1;
//缓存,避免浪费
if(convertView==null){
view1=new ImageView(Main4Activity.this);
}else{
view1= (ImageView) convertView;
}
view1.setImageResource(img[position]);
return view1;
}
}
}
结果展示
改变样式
效果展示
例:ListView中加入图片
public class MainActivity extends AppCompatActivity {
int[] img={R.drawable.androidfilemanager,R.drawable.angrybirds,R.drawable.calculator,R.drawable.fruit,R.drawable.rope};
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView= (ListView) findViewById(R.id.listView);
listView.setAdapter(new MyAdapter1());
}
class MyAdapter1 extends BaseAdapter{
@Override
public int getCount() {
return img.length;
}
@Override
public Object getItem(int position) {
return img[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView view1;
if(convertView==null){
view1=new ImageView(MainActivity.this);
}else{
view1= (ImageView) convertView;
}
view1.setImageResource(img[position]);
return view1;
}
}
}
结果显示
BaseAdapter的每一个方法是干吗的
给GridView中的控件加事件叫setOnItemClickListener
3.ArrayAdapter只能适配文字 new ArrayAdapter()
public class Main5Activity extends AppCompatActivity {
private List<String> list=new ArrayList<String>();
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
listView= (ListView) findViewById(R.id.listView2);
ArrayAdapter arrayAdapter=new ArrayAdapter(this,R.layout.support_simple_spinner_dropdown_item,getList());
listView.setAdapter(arrayAdapter);
}
public List<String> getList() {
for(int i=0;i<10;i++){
list.add("联系人"+i);
}
return list;
}
}
4.跳转页面Intent(从哪,去哪)
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(Main4Activity.this,""+position,Toast.LENGTH_LONG).show();
//跳转页面Intent(从哪,去哪)
Intent intent=new Intent(Main4Activity.this,MainActivity.class);
startActivity(intent);
}
});