在 Backendless 中使用 onListItemClick

Using onListItemClick with Backendless

在我的应用程序中,可以检索保存在服务器上的图书列表。我在 Listview 中显示书籍,现在我尝试向我的应用程序的用户提供所选(通过 onListItemClick)书籍的详细概述,包括名称、发布日期、作者......但在这种情况下我不知道如何将所选书籍及其数据传输到我的 BookDetailActivity。我无法处理 onListItemClick 中的 Map BackendlessCollection...

这是我的 BookAdapter:

public BooksAdapter(Context context, int resource, List<Books> book_list )
{
    super( context, resource, book_list );
    mResource = resource;
    mInflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
}

@Override
 public View getView(int position, View convertView, ViewGroup parent ){
    View view = convertView == null ? mInflater.inflate( mResource, parent, false ) : convertView;    
    TextView booksNameView = (TextView) view.findViewById( R.id.bookName );
    TextView booksReleaseView = (TextView) view.findViewById( R.id.bookRelease );
    TextView booksAuthorView = (TextView) view.findViewById( R.id.bookAuthor );
    Books item = getItem( position );
    booksNameView.setText( item.getName() );
    objectIdView.setText( item.getObjectId() );
    booksReleaseView.setText( item.getRelease() );
    booksAuthorView.setText( item.getAuthor() );
    return view;
}

这是我的 BooksListActivity 的主要代码:

//inside the onCreate
adapter = new BooksAdapter( BooksListActivity.this, R.layout.list_item_books, totalBooks );
setListAdapter( adapter );

Backendless.Data.of( Books.class ).find( query, new LoadingCallback<BackendlessCollection<Books>>( this , getString( R.string.loading_books ), true )
    {
        @Override
        public void handleResponse( BackendlessCollection<Books> booksBackendlessCollection )
        {   book_list = booksBackendlessCollection;
            addMoreItems( booksBackendlessCollection );
            super.handleResponse( booksBackendlessCollection );}
    } );
    ListView list = (ListView) findViewById( android.R.id.list );

//outside the onCreate
@Override
protected void onListItemClick(ListView l, View v, int position, long ObjectId) {
    super.onListItemClick(l, v, position, ObjectId);
    Intent i = new Intent(this, BookDetailActivity.class);
    startActivity(i);
}

最后我会在我的 BookDetailActivity 中显示所选书籍的详细信息作为典型的 TextViews。

我真的希望你能帮助我! 非常感谢!

您可以使用 Intent extras 将数据传递给下一个 activity。您需要做的就是使用 intent.putExtra() 传递数据。

对于您的情况,在您的 onListItemClick 中,您需要执行以下操作:

Intent i = new Intent(this, BookDetailActivity.class);
Book book = totalBooks.get(i);
i.putExtra("title", book.title);
i.putExtra("content", book.content);
startActivity(i);

最终在BookDetailActivityactivity中,可以通过调用getIntent().getExtras()

读取数据

或者,

您可以使用 Bundle 传递整个 Book 对象:

Intent i = new Intent(this, BookDetailActivity.class);
Book book = totalBooks.get(i);
Bundle bundle = new Bundle();
bundle.putSerializable("book", book);
i.putExtras(bundle);
startActivity(i);