我在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() ;
}
});
答案 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