2017-02-09 9 views
-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 
     } 
    }); 

} 

} 

答えて

0

Activity1.java

public class Activity1 extends AppCompatActivity { 

    GridView gridview ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_1); 

     private Integer[] mThumbIds = { 

      R.drawable.ic_round, R.drawable.ic_round, 
      R.drawable.ic_round, R.drawable.ic_round, 
     }; 
     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)); 
        Intent intent=new Intent(MainActivity.this,SecondActivity.class); 
        startActivityForResult(intent, 2);// Activity is started with requestCode 2 
       } 
      } 
     }); 
     } 

     // Call Back method to get the Message form other Activity 
    @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*/ 

         private Integer[] mThumbIds = { 

          R.drawable.ic_round1, R.drawable.ic_round, 
          R.drawable.ic_round, R.drawable.ic_round, 
         }; 
        gridview.setAdapter(new ImageAdapter(this,mThumbIds)); 

       } 
     } 

    } 

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のイメージアレイを削除して、あなたはこのようactivity1にアダプタを設定するときmThumbIdsを渡し、

gridview.setAdapter(new ImageAdapter(this,mThumbIds)); 

がImageAdapter:

public class ImageAdapter extends BaseAdapter { 
     private Context mContext; 

     Integer[] mThumbIds; 
     public ImageAdapter(Context c,Integer[] mThumbIds) { 
      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; 

     } 

    } 
+0

私は取得しています'mThumbIds'を追加すると' gridview.setAdapter(new ImageAdapter(this、mThumbIds));でアクティビティ1にエラーが発生しました – Brooks

+0

'gridview.setAdapter(new ImageAdapter(this、mThuあなたは、すべての更新されたクラスを追加してください。 – Brooks

+0

ImageAdapterコンストラクタのmThumbIds public ImageAdapter(コンテキストc、整数[] mThumbIds){ mContext = c; this.mThumbIds = mThumbIds; } – user2025187

関連する問題