数据解析返回一堆 url
Data parsing returning a bunch of urls
我正在尝试使用 AsyncLoader 获取数据。我得到的结果只是一堆链接,而不是书名。这是我的代码,这是结果。 see image here
public class MainActivity extends AppCompatActivity implements
LoaderCallbacks<List<Book>> {
private static final int LOADER_ID=10;
public ArrayAdapter<Book> mAdapter;
private static final String DATA_API_REQUEST="https://www.googleapis.com/books/v1/volumes?q=android&maxResults=10";
private ListView LV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLoaderManager().initLoader(LOADER_ID,null, MainActivity.this);
}
@NonNull
@Override
public Loader<List<Book>> onCreateLoader(int i, @Nullable Bundle bundle) {
return new BookLoader(this,DATA_API_REQUEST);
}
@Override
public void onLoadFinished(android.content.Loader<List<Book>> loader, List<Book> data) {
LV=(ListView)findViewById(R.id.ListView1);
mAdapter=new ArrayAdapter<Book>(this,android.R.layout.simple_list_item_1,data);
LV.setAdapter(mAdapter);
if (data != null && !data.isEmpty()) {
mAdapter.addAll(data);}
}
@Override
public void onLoaderReset(android.content.Loader<List<Book>> loader) {
mAdapter.clear();
}
更新:
使用
variable.tostring
到您要将 TextView 设置到的变量。在这里,您直接设置文本视图无法转换的对象,因此您可以将对象转换为字符串
您实际上是在打印整个对象,请尝试使用您要打印的元素,例如 Book.name.toString(),然后将其设置在您在适配器中使用的文本视图中。此外,还要粘贴适配器代码,让社区完全理解这个问题。
正如我在评论中提到的,您需要覆盖 Book
class.
的 toString()
方法
你的 Book
class:
@Override
public String toString() {
return this.bookName;
}
大多数对象的默认 toString 方法的输出包括对象的 class 名称以及对象的哈希码,这通常不是预期的。 (From here)
我正在尝试使用 AsyncLoader 获取数据。我得到的结果只是一堆链接,而不是书名。这是我的代码,这是结果。 see image here
public class MainActivity extends AppCompatActivity implements
LoaderCallbacks<List<Book>> {
private static final int LOADER_ID=10;
public ArrayAdapter<Book> mAdapter;
private static final String DATA_API_REQUEST="https://www.googleapis.com/books/v1/volumes?q=android&maxResults=10";
private ListView LV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLoaderManager().initLoader(LOADER_ID,null, MainActivity.this);
}
@NonNull
@Override
public Loader<List<Book>> onCreateLoader(int i, @Nullable Bundle bundle) {
return new BookLoader(this,DATA_API_REQUEST);
}
@Override
public void onLoadFinished(android.content.Loader<List<Book>> loader, List<Book> data) {
LV=(ListView)findViewById(R.id.ListView1);
mAdapter=new ArrayAdapter<Book>(this,android.R.layout.simple_list_item_1,data);
LV.setAdapter(mAdapter);
if (data != null && !data.isEmpty()) {
mAdapter.addAll(data);}
}
@Override
public void onLoaderReset(android.content.Loader<List<Book>> loader) {
mAdapter.clear();
}
更新:
使用
variable.tostring
到您要将 TextView 设置到的变量。在这里,您直接设置文本视图无法转换的对象,因此您可以将对象转换为字符串
您实际上是在打印整个对象,请尝试使用您要打印的元素,例如 Book.name.toString(),然后将其设置在您在适配器中使用的文本视图中。此外,还要粘贴适配器代码,让社区完全理解这个问题。
正如我在评论中提到的,您需要覆盖 Book
class.
toString()
方法
你的 Book
class:
@Override
public String toString() {
return this.bookName;
}
大多数对象的默认 toString 方法的输出包括对象的 class 名称以及对象的哈希码,这通常不是预期的。 (From here)