Я новичок в Android и Android Studio.
Я пытаюсь получить повторное представление с помощью arraylist, но получаю ошибку «Представления ViewHolder не должны быть присоединены при создании».
Это первый раз, когда я пытаюсь реализовать RecyclerView. Сначала я пытаюсь вставить статические данные в макет, но позже я хочу получить данные из базы данных и динамически показать их в действии.
Основная деятельность: -
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerview;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.main_actionbar);
setSupportActionBar(toolbar);
ArrayList<ExampleItem> exampleList = new ArrayList<>();
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product1","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product2","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product3","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product4","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product5","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product6","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product7","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product8","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product9","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product10","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product11","Description", "Bla Bla Bla", "Bla Bla Bla"));
exampleList.add(new ExampleItem(R.drawable.ic_search_black_24dp,"Product12","Description", "Bla Bla Bla", "Bla Bla Bla"));
mRecyclerview = findViewById(R.id.main_recyclerview);
mRecyclerview.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new ExampleAdpater(exampleList);
mRecyclerview.setLayoutManager(mLayoutManager);
mRecyclerview.setAdapter(mAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.sample_menu, menu);
return true;
}
}
Пример кода (класса): -
package com.example.myapplication;
public class ExampleItem {
private int mImageResource;
private String mText1;
private String mText2;
private String mText3;
private String mText4;
public ExampleItem(int imageResource, String text1, String text2, String text3, String text4){
mImageResource = imageResource;
mText1 = text1;
mText2 = text2;
mText3 = text3;
mText4 = text4;
}
public int getImageResource(){
return mImageResource;
}
public String getText1(){
return mText1;
}
public String getText2(){
return mText2;
}
public String getText3(){
return mText3;
}
public String getText4(){
return mText4;
}
}
ExampleAdapter (класс): -
package com.example.myapplication;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class ExampleAdpater extends RecyclerView.Adapter<ExampleAdpater.ExampleviewHolder> {
private ArrayList<ExampleItem> mExampleList;
public static class ExampleviewHolder extends RecyclerView.ViewHolder{
public ImageView mImageView;
public TextView mTextView1;
public TextView mTextView2;
public TextView mTextView3;
public TextView mTextView4;
public ExampleviewHolder(@NonNull View itemView) {
super(itemView);
mImageView = itemView.findViewById(R.id.myImageView1);
mTextView1 = itemView.findViewById(R.id.myTextView1);
mTextView2 = itemView.findViewById(R.id.myTextView2);
mTextView3 = itemView.findViewById(R.id.myTextView3);
mTextView4 = itemView.findViewById(R.id.myTextView4);
}
}
public ExampleAdpater(ArrayList<ExampleItem> exampleList){
mExampleList = exampleList;
}
@NonNull
@Override
public ExampleviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, parent);
ExampleviewHolder evh = new ExampleviewHolder(v);
return evh;
}
@Override
public void onBindViewHolder(@NonNull ExampleviewHolder holder, int position) {
ExampleItem currentItem = mExampleList.get(position);
holder.mImageView.setImageResource(currentItem.getImageResource());
holder.mTextView1.setText(currentItem.getText1());
holder.mTextView2.setText(currentItem.getText2());
holder.mTextView3.setText(currentItem.getText3());
holder.mTextView4.setText(currentItem.getText4());
}
@Override
public int getItemCount() {
return mExampleList.size();
}
}