У меня есть DishesActivity
и DishActivity
. Из DishesActivity
я попадаю в DishActivity
и при нажатии на кнопку home(back)
в тулбаре я попадаю на DishesActivity
, но он почему-то пустой. В логах нет никаких ошибок. Саму кнопку back я настроил, тестил даже с новым проектом. Т.е я создал новый проект, добавил две активити и эта кнопка работает нормально, информация с предыдущей активити отображается. Но это потому что активити предельно простое с одной textview
.
В моем же случае, DishesActivity использует Realm, RecyclerView
.
Ниже код: DishesActivity.java
public class DishesActivity extends AppCompatActivity {
private GridLayoutManager lLayout;
public static final String categoryIdField = "categoryId";
private static RealmResults<Dish> dishes;
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dishes);
//настройка REALM
realm = Realm.getDefaultInstance();
lLayout = new GridLayoutManager(DishesActivity.this, 2);
Intent intent = getIntent();
int categoryId = intent.getIntExtra(CategoryId, 0);
dishes = realm.where(Dish.class).equalTo(categoryIdField, categoryId).findAll();
initRecyclerView();
}
public void initRecyclerView() {
//отображаем данные в RecyclerView
RecyclerView rView = (RecyclerView)findViewById(R.id.recycler_view_dishes);
rView.setHasFixedSize(true);
rView.setLayoutManager(lLayout);
RecyclerViewDishAdapter rcAdapter = new RecyclerViewDishAdapter(DishesActivity.this, dishes);
rView.setAdapter(rcAdapter);
}
public static RealmResults<Dish> getDishes() {
return dishes;
}
}
DishActivity.java
public class DishActivity extends AppCompatActivity {
private ImageView imageView;
private TextView textViewRu;
private Context context;
private RealmResults<Dish> dishes;
private Realm realm;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dish);
imageView = (ImageView) findViewById(R.id.dishImageView);
textViewRu = (TextView) findViewById(R.id.textViewRu);
Intent intent = getIntent();
int dishIntentId = intent.getIntExtra(CategoryId, 0);
context = getApplicationContext();
//настройка REALM
realm = Realm.getDefaultInstance();
dishes = DishesActivity.getDishes();
textViewRu.setText(dishes.get(dishIntentId).getTitleRu());
Glide.with(context).load(dishes.get(dishIntentId).getImgUrl()).into(imageView);
Toolbar dishToolBar = (Toolbar) findViewById(R.id.dish_toolbar);
setSupportActionBar(dishToolBar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle(dishes.get(dishIntentId).getTitleRu());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == android.R.id.home) {
this.finish();
}
return super.onOptionsItemSelected(item);
}
}
RecyclerViewDishHolders.java - это холдер для DishesActivity
public class RecyclerViewDishHolders extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView titleRu;
public TextView titleEng;
public ImageView categoryImage;
private Context context;
public static final String DISH_ID = "DISH_ID";
public RecyclerViewDishHolders(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
titleRu = (TextView)itemView.findViewById(R.id.textViewTitleRu);
titleEng = (TextView)itemView.findViewById(R.id.textViewTitleEng);
categoryImage = (ImageView)itemView.findViewById(R.id.imageViewCategory);
categoryImage.setAdjustViewBounds(true);
context = itemView.getContext();
}
@Override
public void onClick(View view) {
int itemViewPosition = getAdapterPosition();
Toast.makeText(view.getContext(), "Clicked Dish Position = " + itemViewPosition, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, DishActivity.class);
intent.putExtra(DISH_ID, itemViewPosition);
context.startActivity(intent);
}
}
И последнее это адаптер:
public class RecyclerViewDishAdapter extends
RecyclerView.Adapter<RecyclerViewDishHolders> {
private List<Dish> itemList;
private Context context;
public RecyclerViewDishAdapter(Context context, List<Dish> itemList) {
this.itemList = itemList;
this.context = context;
}
@Override
public RecyclerViewDishHolders onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.category_view_list, null);
RecyclerViewDishHolders rcv = new RecyclerViewDishHolders(layoutView);
return rcv;
}
@Override
public void onBindViewHolder(RecyclerViewDishHolders holder, int position) {
holder.titleRu.setText(itemList.get(position).getTitleRu());
holder.titleEng.setText(itemList.get(position).getTitleEng());
Glide.with(context).load(itemList.get(position).getImgUrl()).into(holder.categoryImage);
}
@Override
public int getItemCount() {
return this.itemList.size();
}
}
Не могу понять в чем проблема, но есть подозрение что при возврате на предыдущее активити адаптер не хочет отображать данные из массива, но не знаю почему и как это исправить.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
После maven стал изучать gradle и столкнулся с проблемой, не получается сделать деплой проекта (gradle 43