Android ListView和GridView在选项卡开关之间被清除
我有一个包含3个选项卡的活动。每次我在选项卡之间切换时,我的ListView和GridView(在第一个选项卡上)都会被清除,有趣的是ArrayList包含了之前下载的所有数据,如果我调用addToGrid()函数,ListView就会被很好地填充 为什么在选项卡之间切换时清除列表和网格视图。是否在每个选项卡开关上重新创建包含的片段?我是否需要在每个选项卡切换之间查询数据库并重新填充视图 谢谢 顺便说一下,我在onResume函数中添加了一个“if”语句。如果我保留“If”语句,listview会将行加倍,并在切换回时一次又一次地重新填充它。但是当“if”语句打开时,我的ListView在Resume上保持为空,因为正如我所提到的,ArrayList仍然拥有所有数据 摘自包含ListView的片段:Android ListView和GridView在选项卡开关之间被清除,android,listview,gridview,android-listview,fragment,Android,Listview,Gridview,Android Listview,Fragment,我有一个包含3个选项卡的活动。每次我在选项卡之间切换时,我的ListView和GridView(在第一个选项卡上)都会被清除,有趣的是ArrayList包含了之前下载的所有数据,如果我调用addToGrid()函数,ListView就会被很好地填充 为什么在选项卡之间切换时清除列表和网格视图。是否在每个选项卡开关上重新创建包含的片段?我是否需要在每个选项卡切换之间查询数据库并重新填充视图 谢谢 顺便说一下,我在onResume函数中添加了一个“if”语句。如果我保留“If”语句,listview
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
super.onCreateView(inflater, container, savedInstanceState);
v = inflater.inflate(R.layout.offers_view, null, false);
SharedPreferences preferences = getActivity().getSharedPreferences("USERINFO",
Context.MODE_PRIVATE);
user = preferences.getString("name", null);
Button showAllUserImages = (Button) v.findViewById(R.id.showAllUserImages);
showAllUserImages.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), AllUserImages.class);
startActivity(i);
}
});
RelativeLayout topLoc = (RelativeLayout) v.findViewById(R.id.topLocationsBtn);
topLoc.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent loc = new Intent(getActivity(), com.fideli.top.guide.TopLocations.class);
startActivity(loc);
}
});
RelativeLayout guide = (RelativeLayout) v.findViewById(R.id.guideBtn);
guide.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i= new Intent(getActivity(), com.fideli.top.guide.GloveGuide.class);
startActivity(i);
}
});
return v;
}
@Override
public void onPause() {
super.onPause();
System.out.println("paused!");
}
@Override
public void onResume() {
super.onResume();
if(imageItems.isEmpty()){
getInfoFromDB();
}
if(tasteMakersList.isEmpty()){
getTastemakers();
}
if(feedList.isEmpty()){
downloadFeed();
}
}
private void downloadFeed() {
AsyncHttpClient client = new AsyncHttpClient();
System.out.println("Downloading Feed!!");
client.get("http://www.edmondvarga.com/android_dev/fideli/get-relations.php?mainUser=" + user, null,
new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
try {
JSONArray contacts = response.getJSONArray("info");
for (int i=0; i< contacts.length();i++){
JSONObject json = contacts.getJSONObject(i);
String followedUser = json.getString("folwed_users");
getFeed(followedUser);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
public void getInfoFromDB(){
datasource = new SQLiteDataSource(getActivity());
datasource.open();
List<ImageItem> values = datasource.getAllImageItems();
for (int i = 0; i < values.size(); i++) {
ImageItem ii = new ImageItem(null, null);
ii.setImage(values.get(i).getImage());
ii.setUser(values.get(i).getUser());
ii.setUserId(values.get(i).getUserId());
ii.setLikes(values.get(i).getLikes());
ii.setDescription(values.get(i).getDescription());
ii.setLocation(values.get(i).getLocation());
ii.setAddress(values.get(i).getAddress());
ii.setCity(values.get(i).getCity());
ii.setLat(values.get(i).getLat());
ii.setLng(values.get(i).getLng());
imageItems.add(ii);
addToGrid();
}
}
public void addToGrid() {
gridView = (GridView) v.findViewById(R.id.gridView);
customGridAdapter = new GridViewAdapter(getActivity(), R.layout.row_grid, imageItems);
gridView.setAdapter(customGridAdapter);
gridView.setOnItemClickListener(this);
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
super.onCreateView(充气机、容器、保存状态);
v=充气机充气(R.layout.u视图,空,假);
SharedReferences首选项=getActivity().GetSharedReferences(“USERINFO”,
上下文。模式(私人);
user=preferences.getString(“name”,null);
按钮showAllUserImages=(按钮)v.findViewById(R.id.showAllUserImages);
showAllUserImages.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
意图i=新意图(getActivity(),AllUserImages.class);
星触觉(i);
}
});
RelativeLayout topLoc=(RelativeLayout)v.findViewById(R.id.topLocationsBtn);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent loc=newintent(getActivity(),com.fideli.top.guide.TopLocations.class);
星触觉(loc);
}
});
相对性指南=(相对性指南)v.findViewById(R.id.guideBtn);
guide.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent i=newintent(getActivity(),com.fideli.top.guide.GloveGuide.class);
星触觉(i);
}
});
返回v;
}
@凌驾
public void onPause(){
super.onPause();
System.out.println(“暂停!”);
}
@凌驾
在Resume()上公共无效{
super.onResume();
if(imageItems.isEmpty()){
getInfoFromDB();
}
if(tasteMakersList.isEmpty()){
getTastemakers();
}
if(feedList.isEmpty()){
下载feed();
}
}
私有void下载提要(){
AsyncHttpClient=新的AsyncHttpClient();
System.out.println(“下载提要!!”;
client.get(“http://www.edmondvarga.com/android_dev/fideli/get-relations.php?mainUser=“+用户,空,
新的JsonHttpResponseHandler(){
@凌驾
成功时的公共void(int statusCode,Header[]headers,JSONObject响应){
试试{
JSONArray contacts=response.getJSONArray(“info”);
对于(int i=0;i
您的视图很可能会被破坏,但片段可能不会。我知道,当用户导航到多个页面时,在ViewPager
中会发生这种情况。因此,如果imageItems
变量是一个实例变量,则不会重新创建它,因为片段仍然被创建。请参见t中的生命周期图