一、Intent 界面跳转和数据传输
1、界面跳转
Intent intent2 = new Intent();
intent2.setClass(MainActivity.this, SecondActivity.class);
2、单个数据传输
传输:
Intent intent =new Intent ();
intent.putExtra("dv", str);
接收:
Intent intent =getIntent();
String str =intent.getStringExtra("dv")
注意: 1、get***Extra 类型必须和上个界面数据类型一致。
2、前后两个 变量名必须相同(dv)。
接收:第一个activity
startActivityForResult(intent, 0); //以startActivityForResult()代替startActivity()并带请求值,0:reqesetCode ,这个值是任意的自定义int值,和result Code一样,为了方便接收返回数据
并重写onActivityResult方法,接收返回数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==0) {
textSend1.setText(data.getStringExtra("receive1"));
}
int requestCode, 请求值int resultCode,返回值 Intent data 上一页传回的intent
注:所有携带数据的intent必须写在一个点击事件里才能运行
第二个activity
intent=getIntent();
textSend1.setText(intent.getStringExtra("send2"));
textSend2.setText(intent.getStringExtra("send1"));//接收上一个activity传来的数据。
intent.putExtra("receive1", textReceive1.getText().toString());
setResult(RESULT_OK, intent);
finish(); //携带数据返回并结束当前activity
3、多条数据传输(使用bundle封装数据)
传输:
Intent intent2 = new Intent();
String name="何赛";
String phoneNumber="13180901145";
int age =21;
Bundle bundle =new Bundle();
bundle.putString("name", name);
bundle.putString("phoneNumber", phoneNumber);
bundle.putInt("age", age);
intent2.putExtras(bundle);
startActivity(intent2);
接收:
Bundle bundle=getIntent().getExtras();
String str1= bundle.getString("name");
String str2= bundle.getString("phoneNumber");
int a= bundle.getInt("age");
ett.setText("name:"+str1+"\n"+"phoneNumber:"+str2);
二、Listview 列表显示数据
1、使用arrayadapter实现单行列表。
String[] str={
"美国","中国","英国","法国","德国","日本"
};
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str);
listView.setAdapter(adapter);
2使用simpleadapter时间多样化列表。
List<Map<String, Object>> listItems=
new ArrayList<Map<String,Object>>();
for (int i = 0; i < names.length; i++) {
Map<String, Object> listItem =new HashMap<String,Object>();
listItem.put("name", names[i]);
listItem.put("describe", describe[i]);
listItem.put("header", headerIDs[i]);
listItems.add(listItem);
}
SimpleAdapter adapter =new SimpleAdapter(this, listItems, R.layout.simple_item,
new String[]{"name","describe","header"},
new int[]{R.id.name,R.id.describe,R.id.header});
listView.setAdapter(adapter);
注:1、先使用集合封装数据,在绑定adapter
2、simpleadapter
第二个参数是集合名
第三个是单项布局文件(可自定义可选android内定义好的)
第四个是要在集合内获取的数据对象
第五个是单项布局中对象所对应的ID。
3、给listview添加监听事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, //arg2是当前点击的listitem在listitems中的位置,就是第几个item 也可用在name[arg2]表示name中的第几个名字
long arg3) {
if (names[arg2]=="虎头") {
Intent intent=new Intent(MainActivity.this, HuTou.class);
startActivity(intent);
}
// TODO Auto-generated method stub
}
});
三、使用gridview 网格显示图片
<GridView
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="2pt" //两张相邻图片水平距离
android:verticalSpacing="2pt"//两张相邻图片垂直距离
android:numColumns="4" //每行显示四张图片
android:gravity="center"
></GridView>
List<Map<String, Object>> listitems= new ArrayList<Map<String,Object>>();
for (int i = 0; i < imageIDs.length; i++) {
Map<String, Object> listitem=new HashMap<String, Object>();
listitem.put("image", imageIDs[i]);
listitems.add(listitem);
}
imageView=(ImageView) findViewById(R.id.image);
SimpleAdapter adapter =new SimpleAdapter(this, listitems, R.layout.grid,
new String[]{"image"}, new int[]{R.id.imageView1});
gridView=(GridView) findViewById(R.id.grid);
gridView.setAdapter(adapter);
注:1、图片ID建立int型数组imageIDs,新建集合
2、gridview 主要步骤和list类似(若设置android:numColumns="1" 则与listview相同,listview是特殊的gridview )