0

我正在搜索从另一个带有 xml 布局的 java 文件中获取图像的编码返回到一个按钮。然后按钮将显示我选择的图像。任何人都可以帮助我吗?我需要的是我想要按钮'A'从中获取图像IconGridView.class

Button A = (Button) findViewById (R.id.a);
A.setOnClickListener(this);

public void onClick(View v) {
    // TODO Auto-generated method stub
startActivity(new Intent(this, IconGridView.class));    

}

IconGridView.java

icon = (GridView) findViewById(R.id.icon);

    // Instance of ImageAdapter Class
    icon.setAdapter(new IconAdapter(this));

IconAdapter.java

import android.content.Context;
import android.view.*;
import android.widget.*;


public class IconAdapter extends BaseAdapter {
private Context mContext;

// saving all images in array
public Integer[] mThumbIds = {
        R.drawable.android,R.drawable.w7,
        R.drawable.blogger,R.drawable.google,R.drawable.fb,R.drawable.youtube,R.drawable.msn,R.drawable.gmail,R.drawable.twitter,
        R.drawable.chrome,R.drawable.firefox,R.drawable.instagram,
        R.drawable.emoji1,R.drawable.emoji2,R.drawable.emoji3,R.drawable.emoji4,
        R.drawable.emoji5,R.drawable.emoji6,R.drawable.emoji7,
        R.drawable.love,R.drawable.love1,R.drawable.love2,R.drawable.rose,
        R.drawable.punch,R.drawable.good,R.drawable.peace,
        R.drawable.beer,R.drawable.book,R.drawable.calendar,R.drawable.chat,
        R.drawable.clip,R.drawable.cone,R.drawable.contact,
        R.drawable.cpleset,R.drawable.cross,R.drawable.home,
        R.drawable.laptop,R.drawable.lock,R.drawable.lock1,R.drawable.key,R.drawable.music,R.drawable.nosmoke,R.drawable.note,
        R.drawable.pills,R.drawable.printer,R.drawable.rain,R.drawable.sun,
        R.drawable.recycle,R.drawable.search,R.drawable.shopping,R.drawable.survey,
        R.drawable.sx,R.drawable.teacup,R.drawable.text,R.drawable.toilet,R.drawable.tree,
        R.drawable.up,R.drawable.down,R.drawable.check,R.drawable.qm,

};

// Constructor
public IconAdapter(Context c){
    mContext = c;
}

@Override
public int getCount() {
    return mThumbIds.length;
}

@Override
public Object getItem(int position) {
    return mThumbIds[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(40, 40));
    return imageView;
}

}
4

1 回答 1

0

在您的 GridView 实例上,您可以设置:

 gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

        }
    });

当您单击GridView. position 参数是指您单击的适配器内的元素:

所以你可以这样做:

 gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
           IconAdapter adapter = (IconAdapter) gridView.getAdapter() ;
           Integer drawableId = (Integer)yourAdapter.getItem(position);
           Intent intent = new Intent();
           intent.putExtra("drawableId", drawabledId); 
            setResult(Activity.RESULT_OK, intent);
    finish();   
        }
    });

您必须保留对 IconAdapter 的引用,或者您可以尝试使用以下方法检索:

IconAdapter adapter = (IconAdapter) gridView.getAdapter() ;

编辑:使用 startActivityForResult 开始IconGridView,当调用 gridview 的 onItemClick 时,完成 IconGridView 并将结果设置为附加参数,即您想用作按钮背景的资源 ID。

public void onClick(View v) {
    // TODO Auto-generated method stub
startActivityForResult(new Intent(this, IconGridView.class), 100);    

}



  @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (resultCode ==  Activity.RESULT_OK) {
         int drawableId = data.getIntExtra("drawableId", -1);
         if (drawableId != -1) {
             A.setBackgroundResource(drawableId);
         }
      }
   }
于 2013-04-21T08:34:22.623 回答