2013-12-14 3 views
1

나는 안드로이드 프로그래밍의 세계에서 새로운 것이고 약간의 문제가 발생했다. 문제는 여러 개의 imageView로 구성된 MainActivity에서 gridview를 정의했다는 것입니다. ImageViews에는 다른 gridView와 함께 다른 Activity를 여는 onClickListener가 있습니다. 이 그리드에서 요소 (이미지)를 선택할 때, 선택된 요소를 채택하기 위해 MainActivity에서 gridview를 업데이트하려고하지만, 실제로 이것을 구현하는 방법이 없습니다. 안드로이드 업데이트 다른 활동의 GridView

는 내가 같은 활동에 내 그리드를 업데이트하려고하면 작동하고있는 gridview를 업데이트하려면 다음 코드를 발견

내 두 번째 활동에서
adapter.notifyDataChanged(); 
grid.invalidateViews(); 
grid.setAdapter(adapter); 

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

이것을 참조하면 유용합니다. http://stackoverflow.com/questions/16316208/how-to-refresh-my-gridview –

답변

1

에서 MainActivity는 startActivityForResult을 사용하여 두 번째 활동에 필요한 데이터를 전달하는 두 번째 활동을 표시하고 MainActivity onActivityResult에서 재정의합니다. 두 번째 활동에서 이미지를 선택할 때 setResult(RESULT_OK, data) 다음에 finish()을 사용하십시오. MainActivity onActivityResult에 결과 코드 및 데이터 Intent이 표시됩니다.

당신은 추가 정보를 원하시면 여기를 좀 걸릴 수 있습니다 : http://developer.android.com/training/basics/intents/result.html

0

두 번째 활동

startActivityForResult(intent,1); 

그리고 기능 다음 주요 활동 오버라이드에 :

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