Хотите улучшить этот вопрос? Update the question so it's on-topic for Stack Overflow на русском.
Закрыт 9 месяцев назад.
Подскажите почему мое приложение не работает.Сам пытался разобраться к сожалению не смог. Майн акстивити.
public class MainActivity extends AppCompatActivity {
List<ModelClass> model = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setData();
RecyclerView recyclerView =(RecyclerView) findViewById(R.id.recyclerView);
// создаем адаптер
Adapter_class adapter = new Adapter_class(this, model);
// устанавливаем для списка адаптер
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(adapter);
}
private void setData(){
model.add(new ModelClass (R.color.colorAccent));
model.add(new ModelClass (R.color.colorAccent));
model.add(new ModelClass (R.color.colorAccent));
model.add(new ModelClass (R.color.colorAccent));
}
public void Intent_1(int ButtonPosition){
Intent intent=new Intent(MainActivity.this,for_trenirovryClick.class);
intent.putExtra("OnClickRecyclerView",ButtonPosition);
startActivity(intent);
}
}
public class Adapter_class extends RecyclerView.Adapter<Adapter_class.ViewHolder> {
private LayoutInflater inflater;
private List<ModelClass> modelClass;
Context context1;
MainActivity mainActivity=new MainActivity();
int positionIndex;
Adapter_class(Context context, List<ModelClass> modelClass) {
this.modelClass = modelClass;
this.inflater = LayoutInflater.from(context);
this.context1=context;
}
@Override
public Adapter_class.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(Adapter_class.ViewHolder holder, final int position) {
ModelClass model_class = modelClass.get(position);
holder.button.setBackgroundResource(model_class.getBackground());
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (position){
case 0:mainActivity.Intent_1(0);
case 2:mainActivity.Intent_1(1);
case 3:mainActivity.Intent_1(2);
case 1:mainActivity.Intent_1(3);
}
}
});
}
@Override
public int getItemCount() {
return modelClass.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
final Button button;
ViewHolder(View view) {
super(view);
button = (Button) view.findViewById(R.id.button4);
}
}
}
public class ModelClass {
private int image;
public ModelClass(int image){ this.image = image;}
public int getBackground() {return this.image; }
}
public class for_trenirovryClick extends AppCompatActivity {
List<ModelClass2> model = new ArrayList<>();
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_for_trenirovry_click);
Intent intent1=getIntent();
int i= intent1.getIntExtra("OnClickRecyclerView",1);
setData();
recyclerView=findViewById(R.id.recyclerView2);
// создаем адаптер
Adapter_class2 adapter = new Adapter_class2(this, model);
// устанавливаем для списка адаптер
recyclerView.setAdapter(adapter);
}
private void setData(){
model.add(new ModelClass2 (R.color.colorAccent,"приседания","x 16"));
model.add(new ModelClass2(R.color.colorAccent,"jkhjjhgjhhjhjgjkhkjkkjkj","x 21"));
model.add(new ModelClass2 (R.color.colorAccent,"jdjkgjkdfjgkfdfkhdk","x 10"));
model.add(new ModelClass2 (R.color.colorAccent,"kjhjklkijdhkhdfdsaaa","x 9"));
}
}
public class ModelClass2 {
private int image_resourse;
private String text_for_ex;
private String text_for_times;
public ModelClass2(int image_resourse, String text_for_ex, String text_for_times) {
this.image_resourse = image_resourse;
this.text_for_ex = text_for_ex;
this.text_for_times = text_for_times;
}
public int getImage_resourse() {
return this.image_resourse;
}
public String getText_for_ex() {
return this.text_for_ex;
}
public String getText_for_times() {
return this.text_for_times;
}
}
public class Adapter_class2 extends RecyclerView.Adapter<Adapter_class2.ViewHolder> {
private LayoutInflater inflater1;
private List<ModelClass2> modelClass2;
Adapter_class2(Context context, List<ModelClass2> modelClass) {
this.modelClass2 = modelClass;
this.inflater1 = LayoutInflater.from(context);
}
@Override
public Adapter_class2.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater1.inflate(R.layout.item_layout2, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull Adapter_class2.ViewHolder viewHolder, int i) {
ModelClass2 model_class = modelClass2.get(i);
viewHolder.imageView_ex.setImageResource(model_class.getImage_resourse());
viewHolder.kol_times.setText(model_class.getText_for_times());
viewHolder.name_exercise.setText(model_class.getText_for_ex());
}
@Override
public int getItemCount() {
return modelClass2.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
final TextView name_exercise;
final TextView kol_times;
final ImageView imageView_ex;
final CheckBox checkBox;
ViewHolder(View view) {
super(view);
name_exercise=view.findViewById(R.id.textView11);
kol_times=view.findViewById(R.id.textView12);
imageView_ex=view.findViewById(R.id.imageView5);
checkBox =view.findViewById(R.id.checkBox5);
}
}
}
При клике на кнопку у меня приложение вылетает
Вы создаёте вручную экземпляр активити и вызываете на нём методы. Это не будет работать, т.к. все работоспособные экземпляры активити создаются системой.
У вас в коде много проблем, в т.ч. неправильное именование переменных, классов, методов, засим не буду описывать сложное и правильное решение, а покажу простое решение:
Измените ваш адаптер так, чтобы он принимал созданный системой экземпляр активити:
public class Adapter_class extends RecyclerView.Adapter<Adapter_class.ViewHolder> {
private LayoutInflater inflater;
private List<ModelClass> modelClass;
Context context1;
MainActivity mainActivity;
int positionIndex;
Adapter_class(MainActivity context, List<ModelClass> modelClass) {
this.modelClass = modelClass;
this.inflater = LayoutInflater.from(context);
this.context1=context;
this.mainActivity = context;
}
тут изменена одна строка и одна строка добавлена. После этого ваш код должен заработать.
Есть такая задача: найти максимальную последовательность единиц в матрицеПоследовательность может быть как горизонтальной так и вертикальной
Для чего сравнивать this, и любой Object o? В каких случая они могут оказаться равными?
Собственно, как скрыть/сделать не доступными некоторые методы класса? Например, перезаписанные public методы класса-родителя:
Можно ли в Android Canvas вешать слушателей на изображения(BitMap) ?