Проблема с удалением нижнего колонтитула ListView с помощью removeFooterView () - PullRequest
3 голосов
/ 20 июля 2011

Я пытаюсь удалить заданный нижний колонтитул, используя ту же ссылку, что и при настройке. Однако ничего не происходит.

protected void onPostExecute(ArrayList<Recipe> result) {

        int CHEF_ID = ChefsRecipeList.this.getIntent().getIntExtra("CHEF_ID", 0);

        ListView recipeListView = (ListView)findViewById(android.R.id.list);

        View footer = getLayoutInflater().inflate(R.layout.chef_recipe_list_footer, null);


        if(!addToExisting){

            RecipeManager.getInstance().setRecipeList(result);

            View header = getLayoutInflater().inflate(R.layout.chef_recipe_list_header, null);

            ImageView loadButton = (ImageView)footer.findViewById(R.id.loadmore);

            loadButton.setOnClickListener( new OnClickListener() {

                @Override
                public void onClick(View v) {

                    int CHEF_ID = ChefsRecipeList.this.getIntent().getIntExtra("CHEF_ID", 0);

                    try {

                        Log.d("NXTLAOD", "http://api.foodnetworkasia.com/api/mobile/get_recipes?chefId="+ChefManager.getInstance().getChef(CHEF_ID).getId()+
                        "&format=xml&startIndex="+(RecipeManager.getInstance().getRecipeList().size()+1)+"&endIndex="+(RecipeManager.getInstance().getRecipeList().size()+24));
                        new XMLRecipesParser(true).execute(new URL[] { new URL("http://api.foodnetworkasia.com/api/mobile/get_recipes?chefId="+ChefManager.getInstance().getChef(CHEF_ID).getId()+
                        "&format=xml&startIndex="+RecipeManager.getInstance().getRecipeList().size()+"&endIndex="+(RecipeManager.getInstance().getRecipeList().size()+24))  }  );

                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }
            });

            ImageView chefPhoto = (ImageView)header.findViewById(R.id.chef_photo);

            chefPhoto.setImageBitmap(ImageURLLoader.LoadImageFromURL(ChefManager.getInstance().getChef(CHEF_ID).getLargeURL()));

            TextView chefBio = (TextView)header.findViewById(R.id.chef_bio);

            chefBio.setText(ChefManager.getInstance().getChef(CHEF_ID).getDescription());


            recipeListView.addHeaderView(header);
            recipeListView.addFooterView(footer);

            recipeListView.setAdapter(new RecipeAdapter(ChefsRecipeList.this));

        }else{

            RecipeManager.getInstance().mergeLists(result);

            RecipeAdapter wrapperAdapter=(RecipeAdapter) ((HeaderViewListAdapter)recipeListView.getAdapter()).getWrappedAdapter();


            wrapperAdapter.notifyDataSetChanged();



        }

        if(totalRecipes == RecipeManager.getInstance().getRecipeList().size()){ 

            recipeListView.removeFooterView(footer);
            Log.d("FOODREM", "Footer Removed");

        }

        Log.d("ITCOUNT", totalRecipes+"-"+RecipeManager.getInstance().getRecipeList().size());
        updateItemscount();

    }

}

Ответы [ 3 ]

7 голосов
/ 20 июля 2011

Возможно, вам придется позвонить listView1.setAdapter(adapter), чтобы обновить список.Если это не сработает, другое решение - сделать высоту нижнего колонтитула равной 0 пикселей.Это лучшее решение, если вы планируете снова использовать представление нижнего колонтитула.

1 голос
/ 21 ноября 2014

Вы также можете установить видимость нижнего колонтитула для GONE. Чтобы сделать это, вам нужно обернуть содержимое нижнего колонтитула с помощью linearlayout, а затем установить видимость linearlayout на GONE.

В приведенном ниже примере я установил видимость LogoLinearLayout на GONE.

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:id="@+id/LogoLinearLayout"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/Logo"
                android:src="@drawable/Logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/spacing3"
                android:layout_marginBottom="@dimen/spacing3"
                android:layout_gravity="center" />
        </LinearLayout>
    </LinearLayout>
0 голосов
/ 01 апреля 2014

Я видел этот тип решения (установка высоты нижнего колонтитула на 0 или установка отрицательных полей ..) на многих сообщениях, связанных с сокрытием проблемы нижнего колонтитула, и это работает, но с двумя проблемами: - список больше не будет уважать transcriptMode = "normal", в том смысле, что если последний элемент видим и новый элемент добавлен в список, список не будет прокручиваться до вновь добавленного элемента; - при отображении клавиатуры и изменении размера списка в списке снова не будет отображаться последний элемент.

...