2013-12-14 127 views
1

我在Android編程的世界中是相對新的,我遇到了一些麻煩。問題是我在我的MainActivity中定義了一個gridview,它由多個imageView組成。這些ImageViews有一個onClicklistener,它打開另一個活動與另一個gridView。當在這個網格中選擇一個元素(圖像)時,我想更新我的MainActivity中的gridview以採用選定的元素,但實際上我不知道如何實現這一點。Android更新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

次活動:

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 
相關問題