Android的GridView的 - 需要打开不同的意图意图、不同、Android、GridView

2023-09-05 04:33:42 作者:我拿辣条砸死你

只是一个初学者在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);
       }
 
android中Gridview循环显示服务器图片的问题

解决方案

 公共无效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.