【问题标题】:Android update GridView in another activityAndroid 在另一个活动中更新 GridView
【发布时间】:2013-12-15 03:04:32
【问题描述】:

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

如果我尝试在同一个 Activity 中更新我的 Grid,我发现以下代码可以更新 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() ;
}
});

【问题讨论】:

标签: android gridview


【解决方案1】:

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

您可以在这里查看更多信息:http://developer.android.com/training/basics/intents/result.html

【讨论】:

    【解决方案2】:

    第二个活动:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多