只是一个初学者在Android开发。我目前得到一个GridView设置充当我的应用程序主菜单。我已经成功地得到一个意向使用OnItemClickListener工作()。但是点击后所有6我的图片中去同一个Activity类。我如何去了解不同的活动,让每个图像的意图是什么?
MainActivity:
公共无效的onCreate(包savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
GridView控件的GridView =(GridView控件)findViewById(R.id.gridview);
gridview.setAdapter(新ImageAdapter(本));
gridview.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
Toast.makeText(nclApp2.this,+位置,Toast.LENGTH_SHORT).show();
意图I =新的意图(nclApp2.this,Screen2.class);
startActivity(ⅰ);
}
});
ImageAdapter:
公共类ImageAdapter扩展了BaseAdapter {
私人语境mContext;
公共ImageAdapter(上下文C){
mContext = C;
}
公众诠释getCount将(){
返回mThumbIds.length;
}
公共对象的getItem(INT位置){
返回null;
}
众长getItemId(INT位置){
返回0;
}
//创建由适配器引用的每个项目的新的ImageView
公共查看getView(INT位置,查看convertView,ViewGroup中父){
ImageView的ImageView的;
如果(convertView == NULL){//如果它不回收,初始化一些属性
ImageView的=新ImageView的(mContext);
imageView.setLayoutParams(新GridView.LayoutParams(85,85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8,8,8,8);
} 其他 {
ImageView的=(ImageView的)convertView;
}
imageView.setImageResource(mThumbIds [位置]);
返回ImageView的;
}
//引用到我们的形象
私人整数[] mThumbIds = {
R.drawable.icon,R.drawable.icon,
R.drawable.icon,R.drawable.icon,
R.drawable.icon,R.drawable.icon,
};
类MyOnClickListener实现OnClickListener
{
私人最终诠释地位;
公共MyOnClickListener(INT位置)
{
this.position =位置;
}
公共无效的onClick(视图v)
{
}
}
编辑:经过几个小时搜索,我发现这个作品:
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
Toast.makeText(nclApp2.this,+位置,Toast.LENGTH_SHORT).show();
//意图I =新的意图(nclApp2.this,Screen2.class);
意图myIntent = NULL;
如果(位置== 0){
myIntent =新的意向书(v.getContext(),Screen1.class);
}
如果(位置== 1){
myIntent =新的意向书(v.getContext(),Screen2.class);
}
如果(位置== 2){
myIntent =新的意向书(v.getContext(),Screen3.class);
}
startActivity(myIntent);
}
解决方案
您
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
所以利用 INT位置
的一部分......
开关(位置){
情况下0:
//开始一个活动
打破;
情况1:
//启动另一项活动
打破;
// 等等。
Just a beginner at Android development. I've currently got a GridView setup to act as a main menu for my application. I've managed to get an intent working using OnItemClickListener(). However all 6 of my images when clicked go to the same Activity class. How do I go about giving each image an intent to different activities?
MainActivity:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(nclApp2.this, "" + position, Toast.LENGTH_SHORT).show();
Intent i = new Intent(nclApp2.this, Screen2.class);
startActivity(i);
}
});
ImageAdapter:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.icon, R.drawable.icon,
R.drawable.icon, R.drawable.icon,
R.drawable.icon, R.drawable.icon,
};
class MyOnClickListener implements OnClickListener
{
private final int position;
public MyOnClickListener(int position)
{
this.position = position;
}
public void onClick(View v)
{
}
}
Edit: After hours searching, I found that this works!:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(nclApp2.this, "" + position, Toast.LENGTH_SHORT).show();
//Intent i = new Intent(nclApp2.this, Screen2.class);
Intent myIntent = null;
if(position == 0){
myIntent = new Intent(v.getContext(), Screen1.class);
}
if(position == 1){
myIntent = new Intent(v.getContext(), Screen2.class);
}
if(position ==2){
myIntent = new Intent(v.getContext(), Screen3.class);
}
startActivity(myIntent);
}
解决方案
You have
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
so make use of the int position
part of it...
switch (position) {
case 0:
// start one activity
break;
case 1:
// start another activity
break;
// etc.