每次旋转手机屏幕时,都会重新加载gridview的适配器。
我的清单上有这个(android:configChanges =“orientation | keyboardHidden | keyboard | screenSize”),我知道它应该正常工作:不调用oncreate()(通常设置适配器)并调用onConfigurationChanged(我只有一个简单的Toast进行验证)。
问题是,我不知道从哪里(方法,活动,进程等),每当我旋转手机时,适配器被调用,使用,重置并重新加载到gridview。
我只需要找到一种方法,只在onCreate()中设置适配器,当首次创建活动时......手机旋转时不会发生任何事情......这就是......
对于没有gridviews的其他活动我使用相同的东西,并且它完美地工作,只使用上面显示的清单代码....
任何帮助深深感激......
答案 0 :(得分:0)
请尝试添加“screenSize”属性,如下所示:
<activity
android:name=".YourActivityName"
android:configChanges="orientation|screenSize">
</activity>
答案 1 :(得分:0)
我认为问题出在您的Adapter类上。 尝试使用此代码:
Inside Activity 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"
希望它会对你有所帮助:)。