BookListing项目。每本图书搜索都会覆盖以前的结果。你如何清除ListView?
问题描述:
这是我的onClick信息:BookListing项目。每本图书搜索都会覆盖以前的结果。你如何清除ListView?
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 W/BookLoader:
@Override
public Loader<List<BookListing>> onCreateLoader(int i, Bundle args) {
return new BookLoader(this, GOOGLE_BOOKS_URL + searchedBook);
}
@Override
public void onLoadFinished(Loader<List<BookListing>> loader, List<BookListing> bookListings) {
mAdapter.clear();
if(bookListings != null && !bookListings.isEmpty()) {
mAdapter.addAll(bookListings);
}
}
@Override
public void onLoaderReset(Loader<List<BookListing>> loader) {
mAdapter.clear();
}
我能够得到的搜索结果。但是当再次搜索时,以前的结果不明确。他们只是不断重叠。
答
当添加BookListFragment,使用replace()
代替add()
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.book_list_frame, bookListFragment)
.commit();
希望它可以帮助
答
你必须使用replace()
代替add()
getSupportFragmentManager().beginTransaction()
.replace(R.id.book_list_frame, bookListFragment).commit();
应该这样做
答
这是一个解决方案。通过首先获取其父(ListView)来删除所有子视图(行)。
public void removeView(View v) {
if(v.getParent() != null) {
((ViewGroup) v.getParent()).removeView(v);
}
}
对于ListView中的每一行调用removeView(v)
。在这种情况下,所有的行共享一个家长这样尝试使该父实例字段,然后上面的方法将是:
listView.removeAllViews();
希望:
ListView listView;
. . .
public static void removeView(View v) {
listView.removeView(v);
}
您还可以通过删除与一个单一的电话都行这有助于!
答
difference between fragmentTransaction.add and fragmentTransaction.replace 只要进一步添加到CamiloCons的答案上,每次调用add()时都会在顶部添加一个新的碎片层。
+0
谢谢!我知道这是一件小事,无法在任何地方找到答案。 –
答
@Override
public Loader<List<BookListing>> onCreateLoader(int i, Bundle args) {
return new BookLoader(this, GOOGLE_BOOKS_URL + searchedBook);
}
@Override
public void onLoadFinished(Loader<List<BookListing>> loader,
List<BookListing> bookListings) {
mAdapter.clear();
if(bookListings != null && !bookListings.isEmpty()) {
mAdapter.replace(bookListings);
}
}
@Override
public void onLoaderReset(Loader<List<BookListing>> loader) {
mAdapter.clear();
}
重复答案? – phpdroid
@phpdroid我在写回复时他张贴 –