Android在另一个活动中更新了GridView

时间:2013-12-14 16:09:02

标签: android gridview

我在Android编程领域相对较新,我遇到了一些麻烦。问题是我在MainActivity中定义了一个gridview,它由几个imageView组成。那些ImageViews有一个onClicklistener,它用另一个gridView打开另一个Activity。在此网格中选择元素(图像)时,我想更新MainActivity中的gridview以采用所选元素,但实际上我不知道如何实现它。

如果我尝试在同一个Activity中更新我的网格,我发现以下代码更新了gridView:

adapter.notifyDataChanged();
grid.invalidateViews();
grid.setAdapter(adapter);

我的第二个Activity中的onClickListener:

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

ResolveInfo info = mApps.get(position);

//sets the new drawable
Helper.selectedAppImages[0]=getResources().getDrawable(R.drawable.ic_launcher);

//UPDATE THE GRIDVIEW IN MY MAINACTIVITY     

AppView.this.finish() ;
}
});

2 个答案:

答案 0 :(得分:1)

在您的MainActivity中,使用startActivityForResult显示您在第二个活动中需要传递的第二个活动数据,并在您的MainActivity onActivityResult中覆盖。从第二个活动中选择图片时,请使用setResult(RESULT_OK, data),然后使用finish()。您将在MainActivity Intent中获得结果代码和数据onActivityResult

您可以在此处查看更多信息:http://developer.android.com/training/basics/intents/result.html

答案 1 :(得分:0)

第二项活动:

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

ResolveInfo info = mApps.get(position);

//sets the new drawable
Helper.selectedAppImages[0]=getResources().getDrawable(R.drawable.ic_launcher);

//UPDATE THE GRIDVIEW IN MY MAINACTIVITY     
Intent returnIntent = new Intent();
 returnIntent.putExtra("info",info);//<-- or set the image that you want to change
 AppView.this.setResult(RESULT_OK,returnIntent);     
AppView.this.finish() ;
}
});

以第二项活动开始:

startActivityForResult(intent,1);

在主要活动中覆盖以下功能:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_OK){      
         String result=data.getStringExtra("info"); 
         adapter.notifyDataChanged();         

     }
     if (resultCode == RESULT_CANCELED) {    
         //Write your code if there's no result
     }
  }
}//onActivityResult