数据解析返回一堆网址

时间:2018-09-26 10:26:41

标签: android android-studio-2.3

我正在尝试使用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的变量。在这里,您直接设置了textview无法转换的对象,因此可以将对象转换为String

2 个答案:

答案 0 :(得分:0)

您实际上正在打印整个对象,请尝试使用要打印的元素(例如Book.name.toString()),然后在适配器中使用的文本视图中进行设置。此外,还请粘贴适配器代码,以使社区完全了解该问题。

答案 1 :(得分:0)

正如我在评论中所提到的,您需要覆盖toString()类的Book方法。

在您的Book类中是这样的:

@Override
public String toString() {
   return this.bookName;
}

大多数对象的默认toString方法的输出包括对象的类名以及对象的哈希码,通常这不是预期的。 (From here