Праект BookListing. Кожная пошукавая кніга перакрывае папярэднія вынікі. Як вы ясна ListView?

Гэта мая OnClick інфармацыя:

        Button searchButton = (Button) findViewById(R.id.search_button);
    searchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                BookListFragment bookListFragment = new BookListFragment();

                getSupportFragmentManager().beginTransaction()
                        .add(R.id.book_list_frame, bookListFragment).commit();

            }

    });

BookListFragment ж/BookLoader:

    @Override
public Loader> onCreateLoader(int i, Bundle args) {

    return new BookLoader(this, GOOGLE_BOOKS_URL + searchedBook);
}


@Override
public void onLoadFinished(Loader> loader, List bookListings) {
    mAdapter.clear();


    if(bookListings != null && !bookListings.isEmpty()) {
        mAdapter.addAll(bookListings);
    }

}

@Override
public void onLoaderReset(Loader> loader) {
    mAdapter.clear();

}

Я магу атрымаць вынікі пошуку. Але пры пошуку зноў папярэднія вынікі не ясна. Яны проста пастаянна перакрываюць адзін аднаго.

First Search Screenshot Second Search Screenshot

1

5 адказы

 @Override
 public Loader> onCreateLoader(int i, Bundle args) {

 return new BookLoader(this, GOOGLE_BOOKS_URL + searchedBook);
 }


@Override
public void onLoadFinished(Loader> loader, 
    List bookListings) {
         mAdapter.clear();


if(bookListings != null && !bookListings.isEmpty()) {
    mAdapter.replace(bookListings);
    }

}
@Override
public void onLoaderReset(Loader> loader) {
mAdapter.clear();
 }
2
дададзена

difference between fragmentTransaction.add and fragmentTransaction.replace Just further adding onto CamiloCons answer, you're "adding" a new layer of fragments on top everytime you call add().

0
дададзена
Дзякуй! Я ведаў, што гэта было нешта маленькае проста не мог знайсці адказ у любым месцы.
дададзена аўтар T. Rodgers, крыніца

You have to use replace() instead of add()

 getSupportFragmentManager().beginTransaction()
                            .replace(R.id.book_list_frame, bookListFragment).commit();

Гэта павінна зрабіць гэта

0
дададзена
паўтаральны адказ?
дададзена аўтар phpdroid, крыніца
@phpdroid я пісаў адказ, калі ён адправіў
дададзена аўтар Cold Fire, крыніца

Гэта адно рашэнне. Выдаліць усе даччыныя прадстаўлення (радкі) спачатку атрымаць іх бацькоў (ListView).

public void removeView(View v) {
    if(v.getParent() != null) {
        ((ViewGroup) v.getParent()).removeView(v);
    }
}

Выклік removeView (v) для кожнага радка ў вашым ListView. У гэтым выпадку ўсе радкі падзяляюць адзін з бацькоў, таму паспрабуйце зрабіць гэты бацька поле асобніка, а затым метад вышэй:

ListView listView;

. . .

public static void removeView(View v) {
    listView.removeView(v);
}

Вы таксама можаце выдаліць усе радкі з дапамогай аднаго выкліку з дапамогай:

listView.removeAllViews();

Спадзяюся, што гэта дапамагае!

0
дададзена

When adding a BookListFragment, use replace() instead of add()

getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.book_list_frame, bookListFragment)
    .commit();

Спадзяюся, што гэта дапамагае

0
дададзена