Android在另一个活动中更新GridView
我对Android编程相对来说是个新手,遇到了一些麻烦。问题是我在MainActivity中定义了一个gridview,它由几个ImageView组成。这些ImageView有一个onClicklistener,它用另一个gridView打开另一个活动。在这个网格中选择一个元素(图像)时,我想在我的MainActivity中更新gridview以采用所选元素,但实际上我不知道如何实现这一点 我发现以下代码用于更新gridView,如果我尝试在同一活动中更新我的网格,该代码将正常工作:Android在另一个活动中更新GridView,android,gridview,Android,Gridview,我对Android编程相对来说是个新手,遇到了一些麻烦。问题是我在MainActivity中定义了一个gridview,它由几个ImageView组成。这些ImageView有一个onClicklistener,它用另一个gridView打开另一个活动。在这个网格中选择一个元素(图像)时,我想在我的MainActivity中更新gridview以采用所选元素,但实际上我不知道如何实现这一点 我发现以下代码用于更新gridView,如果我尝试在同一活动中更新我的网格,该代码将正常工作: adapt
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()
。您将在MainActivityonActivityResult
中获得结果代码和数据Intent
您可以在此处查看更多信息:在主活动中,使用
startActivityForResult
显示第二个活动,传递您在第二个活动中需要的数据,并在主活动中覆盖ActivityResult
。从第二个活动中选择图像时,请使用setResult(RESULT\u OK,data)
,然后使用finish()
。您将在MainActivityonActivityResult
中获得结果代码和数据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
这可能对你有用