Я почти закончил с этим проектом, и код неопрятен, но я пытаюсь передать данные через массив адаптера в третье действие, но даже без передачи данных намерение не приведет его к третьему действию.
Я просматривал стекопоток, я изменил контекст. Я пытался добавить флаги и тому подобное.
У меня есть три основных действия, один адаптер и два пользовательских класса.
Кроме того, в представлении списка используется настраиваемый адаптер для другого представления карточки в зависимости от введенных данных, если это имеет значение.
public class BookAdaptor extends ArrayAdapter {
int mLayoutID;
List<BookList> dataset;
Context mContext;
public BookAdaptor(Context context, int resource, List<BookList> objects) {
super(context, resource, objects);
mContext = context;
dataset = objects;
mLayoutID = resource;
}
public class pickedAuthor implements Serializable {
private String genre;
private String bookTitle;
private String synopsis;
private String bookAuthor;
private String bookPublisher;
private String bookImage;
private int currentPlace;
public pickedAuthor(String genre, String bookTitle, String synopsis, String bookAuthor, String bookPublisher, String bookImage, int currentPlace) {
this.genre = genre;
this.bookTitle = bookTitle;
this.synopsis = synopsis;
this.bookAuthor = bookAuthor;
this.bookPublisher = bookPublisher;
this.bookImage = bookImage;
this.currentPlace = currentPlace;
}
public int getCurrentPlace() {
return currentPlace;
}
public String getCategoryImage() {
return genre;
}
public String getBookImage() {
return bookImage;
}
public String getBookTitle() {
return bookTitle;
}
public String getBookSynopsis() {
return synopsis;
}
public String getBookAuthor() {
return bookAuthor;
}
public String getBookPublisher() {
return bookPublisher;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View currentListViewItem = convertView;
// Check if the existing view is being reused, otherwise inflate the view
if (currentListViewItem == null) {
currentListViewItem = LayoutInflater.from(getContext()).inflate(mLayoutID, parent, false);
}
//Get the Number object for the current position
final BookList currentNumber = dataset.get(position);
//Set the attributed of list_view_number_item views
ImageView iconImageView = (ImageView) currentListViewItem.findViewById(R.id.image_view_book_icon);
int i = mContext.getResources().getIdentifier(
currentNumber.getBookImage(), "drawable",
mContext.getPackageName());
//Setting the icon
iconImageView.setImageResource(i);
TextView titleNameTextView = (TextView) currentListViewItem.findViewById(R.id.text_view_book_title);
titleNameTextView.setText(currentNumber.getBookTitle());
TextView authorNameTextView = (TextView) currentListViewItem.findViewById(R.id.text_view_author_name);
authorNameTextView.setText(currentNumber.getBookAuthor());
TextView publisherNameTextView = (TextView) currentListViewItem.findViewById(R.id.text_view_publisher_name);
publisherNameTextView.setText(currentNumber.getBookPublisher());
CardView button = (CardView) currentListViewItem.findViewById(R.id.card_view_list_item);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent;
int currentDigit;
intent = new Intent(mContext.getApplicationContext(), DetailsActivity.class);
String currentGenre,currentTitle, currentBookImage, currentCategoryImage, currentSynopsis, currentAuthor, currentPublisher;
currentDigit = 1;
currentGenre = currentNumber.getCategoryImage();
currentTitle = currentNumber.getBookImage().toString();
currentBookImage = currentNumber.getBookImage();
currentSynopsis = currentNumber.getBookSynopsis();
currentAuthor = currentNumber.getBookAuthor();
currentPublisher = currentNumber.getBookPublisher();
pickedAuthor author;
author = new pickedAuthor(currentGenre, currentTitle, currentSynopsis, currentAuthor, currentPublisher, currentBookImage, currentDigit);
intent.putExtra("Author", author);
mContext.getApplicationContext().startActivity(intent);
}
});
return currentListViewItem;
}
}
package com.example.bookstore;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class DetailsActivity extends AppCompatActivity {
public BookAdaptor.pickedAuthor author;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
Intent intent = getIntent();
author = (BookAdaptor.pickedAuthor) intent.getSerializableExtra("Author Name");
TextView titleNameTextView = (TextView) findViewById(R.id.text_view_book_title);
titleNameTextView.setText(author.getBookTitle());
TextView authorNameTextView = (TextView) findViewById(R.id.details_text_view_author_name);
authorNameTextView.setText(author.getBookAuthor());
TextView publisherNameTextView = (TextView) findViewById(R.id.details_text_view_publisher_name);
publisherNameTextView.setText(author.getBookPublisher());
TextView synopsisTextView = (TextView) findViewById(R.id.text_view_synopsis);
synopsisTextView.setText(author.getBookSynopsis());
}
}