2014-01-15 24 views
1

每次我旋转手机的屏幕时,gridview的适配器都会重新加载。我知道它的工作原理应该如下:oncreate()不被调用(其中适配器通常设置在该位置)。我已经在我的清单(android:configChanges =“orientation | keyboardHidden | keyboard | screenSize” )和onConfigurationChanged被调用(我只是一个简单的吐司验证)。如何强制Gridview在屏幕旋转后不重新加载适配器

问题是,我不知道从哪里(方法,活动,过程等),适配器被调用,使用,重置和重新加载到GridView每次我旋转手机。

我只需要找到一种方法,适配器只能在onCreate()中设置,当第一次创建活动时......手机旋转时什么也不应该发生......这就是所有.. 。

我用的是同样的事情,那里有没有GridView的其他活动和它完美的作品,只是用上面显示manifest's代码....

任何帮助深表感谢......

+0

使用片段可能会给你想要的东西,因为它可以更好地控制配置更改。 –

+0

该链接是http://developer.android.com/guide/topics/resources/runtime-changes.html –

回答

0

请尝试添加“screenSize”属性,如下所示:

<activity 
    android:name=".YourActivityName" 
    android:configChanges="orientation|screenSize"> 
</activity> 
+0

自己处理配置更改会使其使用替代资源变得更加困难,因为系统不会自动应用它们为你。当您必须避免由于配置更改而重新启动并且不推荐用于大多数应用程序时,应该将此技术视为最后一招.http://developer.android.com/guide/topics/resources/runtime-changes.html – Raghunandan

+0

yes! !请提出可以解决问题的办法,它将有助于我们所有人学习! –

+0

解决方案是在主题下提供的链接提供方向更改 – Raghunandan

0

我认为问题出在你的Adapter类上。 尝试使用此代码:

内活动onCreate方法:

GridView grid = (GridView) findViewById(R.id.gridView); 
grid.setAdapter(new Adapter(this)); 

Adapter.java

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class Adapter extends BaseAdapter { 

private Context mContext; 
private LayoutInflater mInflator; 

public Adapter(Context context) { 

    this.mContext = context; 
    mInflator = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

} 

@Override 
public int getCount() { 
    return 10; 
} 

@Override 
public Object getItem(int arg0) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 

static class ViewHolder { 

    private TextView appLable; 
    private ImageView appICon; 

} 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 

    View view = null; 
    if (convertView == null) { 
     final ViewHolder vHolder = new ViewHolder(); 
     view = mInflator.inflate(R.layout.item, null); 
     vHolder.appLable = (TextView) view.findViewById(R.id.lable); 
     vHolder.appICon = (ImageView) view.findViewById(R.id.icon); 
     view.setTag(vHolder); 

    } else { 
     view = convertView; 

    } 

    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.appLable.setText("position " + position); 

    return view; 
} 
} 

将这个清单里面活动标签:

android:configChanges="orientation" 

希望它会帮助你:)