Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在另一个活动中更新GridView_Android_Gridview - Fatal编程技术网

Android在另一个活动中更新GridView

Android在另一个活动中更新GridView,android,gridview,Android,Gridview,我对Android编程相对来说是个新手,遇到了一些麻烦。问题是我在MainActivity中定义了一个gridview,它由几个ImageView组成。这些ImageView有一个onClicklistener,它用另一个gridView打开另一个活动。在这个网格中选择一个元素(图像)时,我想在我的MainActivity中更新gridview以采用所选元素,但实际上我不知道如何实现这一点 我发现以下代码用于更新gridView,如果我尝试在同一活动中更新我的网格,该代码将正常工作: adapt

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

我发现以下代码用于更新gridView,如果我尝试在同一活动中更新我的网格,该代码将正常工作:

adapter.notifyDataChanged();
grid.invalidateViews();
grid.setAdapter(adapter);
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() ;
}
});
第二个活动中的onClickListener:

adapter.notifyDataChanged();
grid.invalidateViews();
grid.setAdapter(adapter);
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() ;
}
});
mGrid.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
ResolveInfo=mApps.get(位置);
//设置新的可绘制图形
Helper.selectedAppImages[0]=getResources().getDrawable(R.drawable.ic_启动器);
//在MY Main活动中更新GRIDVIEW
AppView.this.finish();
}
});

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


您可以在此处查看更多信息:

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

您可以在此处查看更多信息:

第二个活动:

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() ;
}
});
并在主活动中覆盖以下功能:

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
第二项活动:

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() ;
}
});
并在主活动中覆盖以下功能:

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

这可能对你有用