-1
アクティビティから戻るときに、私のグリッドビュー内の画像を変更したいと思います。 position == 0
をクリックすると、Activity2.class
が開きます。 Activity2.class
ボタンをクリックすると、Activity1.class
に戻ります。これは、position == 0
の画像をgridviewに置き換えたいときです。Android - グリッドビュー画像を更新する
ImageAdapter.java
public class ImageAdapter extends BaseAdapter {
private Context mContext;
Integer[] mThumbIds;
public ImageAdapter(Context c) {
mContext = c;
this.mThumbIds=mThumbIds;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mContext);
final ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_level_single, null, true);
holder = new ViewHolder();
holder.image = (ImageView) convertView
.findViewById(R.id.myImageView);
holder.number = (TextView) convertView
.findViewById(R.id.myImageViewText);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.image.setImageResource(mThumbIds[position]);
if (position == 0) {
holder.number.setText("1");
}
if (position == 1) {
holder.number.setText("2");
}
if (position == 2) {
holder.number.setText("3");
}
if (position == 3) {
holder.number.setText("4");
}
return convertView;
}
private static class ViewHolder {
public ImageView image;
public TextView number;
}
}
Activity1.java
public class Activity1 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
Integer[] mThumbIds = {
R.drawable.ic_round, R.drawable.ic_round,
R.drawable.ic_round, R.drawable.ic_round,
};
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this,mThumbIds));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
if (position == 0) {
Intent intent = new Intent(v.getContext(), Activity2.class);
intent.putExtra("text1", getString(R.string.test));
startActivityForResult(intent, 2);
}
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 2
if(requestCode==2)
{
/*Change image at 0th position and pass array to ImageAdapter*/
Integer[] mThumbIds = {
R.drawable.ic_complete, R.drawable.ic_complete,
R.drawable.ic_complete, R.drawable.ic_complete,
};
gridview.setAdapter(new ImageAdapter(this));
}
}
}
Activity2.java
public class Activity2 extends AppCompatActivity {
Button btn_next_exercise;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
btn_replace = (Button) findViewById(R.id.btn_replace);
final Intent i = new Intent();
btn_replace.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
setResult(2,intent);
finish();//finishing activity
}
});
}
}
私は取得しています'mThumbIds'を追加すると' gridview.setAdapter(new ImageAdapter(this、mThumbIds));でアクティビティ1にエラーが発生しました – Brooks
'gridview.setAdapter(new ImageAdapter(this、mThuあなたは、すべての更新されたクラスを追加してください。 – Brooks
ImageAdapterコンストラクタのmThumbIds public ImageAdapter(コンテキストc、整数[] mThumbIds){ mContext = c; this.mThumbIds = mThumbIds; } – user2025187