Android-----结合GridView把SimpleAdapter中选中的项传给另一个Activity
2016-11-14 23:41
274 查看
效果图如下:
实现的功能:
程序中的界面是用GridView 来布局图片的,然后图片的数据有SimpleAdapter提供。
程序中想通过点击界面的任意一个图片,跳到另一个activity中显示出来。
思路:
1.在要传值的activity中定义一个数组,把所有图片资源放到这个数组中,我这里用的是二维数组。
2.因为点击gridview中的项的时候,项的position默认是从0到数组.length 的,所以这里通过[position/列数][position%列数] 得到具体二维数组中的图片id.
3.通过intent 传给另一个activity。因为id 都是final int 类型的,所以通过intent.putExtra("imgId",imgs[position/列数][position%列数]) 传图片id ; getIntent().getExtras().getInt("imgId") 得到图片id,任务完成!
负责传值的 Activity:
xml:
注意:源码中的col 要和 xml 中的numColumns 的大小一致,因为后面要用来判断选的是哪一个imgId.
SimpleAdapter 中的ImageView控件的 cell.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
接收页面源码:
实现的功能:
程序中的界面是用GridView 来布局图片的,然后图片的数据有SimpleAdapter提供。
程序中想通过点击界面的任意一个图片,跳到另一个activity中显示出来。
思路:
1.在要传值的activity中定义一个数组,把所有图片资源放到这个数组中,我这里用的是二维数组。
2.因为点击gridview中的项的时候,项的position默认是从0到数组.length 的,所以这里通过[position/列数][position%列数] 得到具体二维数组中的图片id.
3.通过intent 传给另一个activity。因为id 都是final int 类型的,所以通过intent.putExtra("imgId",imgs[position/列数][position%列数]) 传图片id ; getIntent().getExtras().getInt("imgId") 得到图片id,任务完成!
负责传值的 Activity:
package com.xiaoming.listviewagain; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class GridViewTest extends AppCompatActivity { GridView grid ; final int[][] imageIds = { {R.drawable.back, R.drawable.violet1, R.drawable.red1, R.drawable.blue1}, {R.drawable.back, R.drawable.violet1, R.drawable.red1, R.drawable.blue1} }; private int col = 4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid_view_test); List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>(); for(int i = 0;i<2;i++){ for(int j = 0;j<imageIds[0].length;j++){ Map<String,Object> item = new HashMap<String,Object>(); item.put("image",imageIds[i][j]); listItems.add(item); } } SimpleAdapter simpleAdapter = new SimpleAdapter(this,listItems, R.layout.cell,new String[]{"image"},new int[]{R.id.image1}); grid = (GridView)findViewById(R.id.grid1); grid.setAdapter(simpleAdapter); grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(GridViewTest.this,GridViewResive.class); intent.putExtra("imgId",imageIds[position/col][position%col]); startActivity(intent); } }); } }
xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_horizontal" tools:context="com.xiaoming.listviewagain.GridViewTest"> <GridView android:id="@+id/grid1" android:layout_width="match_parent" android:layout_height="wrap_content" android:horizontalSpacing="1pt" android:verticalSpacing="1pt" android:numColumns="4" android:gravity="center"/> </LinearLayout>
注意:源码中的col 要和 xml 中的numColumns 的大小一致,因为后面要用来判断选的是哪一个imgId.
SimpleAdapter 中的ImageView控件的 cell.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
接收页面源码:
package com.xiaoming.listviewagain; import android.content.Intent; import android.graphics.drawable.Drawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.Toast; public class GridViewResive extends AppCompatActivity { ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid_view_resive); imageView = (ImageView)findViewById(R.id.myImage); Intent intent = getIntent(); final int imageRId = intent.getExtras().getInt("imgId"); imageView.setImageResource(imageRId); } }xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.xiaoming.listviewagain.GridViewResive"> <ImageView android:id="@+id/myImage" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
相关文章推荐
- Android SimpleAdapter显示ListView、GridView
- android Adapter综合使用(ArrayAdapter、SimpleAdapter、BaseAdapter在ListView和GridView中的使用)
- Android SimpleAdapter显示ListView、GridView
- ListView加ArrayAdapter结合android.R.layout.activity_list_item快速实现图文显示
- Android知识点2-Adapter中使用Intent跳转到另一个activity
- Android SimpleAdapter显示ListView、GridView
- Android中GridView的使用——使用自带的SimpleAdapter(简单适配器)
- GridView和SimpleAdapter的结合使用显示图片
- android 从activity用intent跳转到listactivity并在其中用simpleadapter在listview中显示数据列
- GridView && ArrayAdapter && SimpleAdapter && BaseAdapter【Android】
- marsAndroid学习——常见控件ExpandableListActivityh和SimpleExpandableListAdapter的简单使用
- 【Android】以SimpleAdapter做适配器的ListView和GridView
- Android中GridView的使用——使用自带的SimpleAdapter(简单适配器)
- Android 中 ListAactivity 和Activity 使用ListView 以及ArrayAdapter和SimpleAdapter参数详解
- Android SimpleAdapter显示ListView、GridView
- marsAndroid学习——常见控件ExpandableListActivityh和SimpleExpandableListAdapter的简单使用
- 【Android】以SimpleAdapter做适配器的ListView和GridView
- Android SimpleAdapter显示ListView、GridView
- Android之基于BaseAdapter和SimpleAdapter的GridView
- Android-GridView (Simpleadapter)