Изменение содержимого определенных карточек в RecyclerView?
Как надо перестроить код, что бы можно было назначать img не на все карточки, а только на те, которые я указываю - например номер 4, 15, 31?
main
public class MainActivity extends AppCompatActivity {
private EditText innerText;
private Button butClose;
private AlertDialog OptionDialog;
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private int img1;
ArrayList<String> myValues = new ArrayList<String>();
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
innerText = findViewById(R.id.innerText);
myValues.add("KitKat");
myValues.add("Lollipop");
myValues.add("Marshmallow");
myValues.add("1232455465778");
img1 = R.drawable.star;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void openDialog(View v){
Dialogus();
innerText.setText("");
}
public void Dialogus(){
LayoutInflater li = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.stats_fragment, null, false);
OptionDialog = new AlertDialog.Builder(this).create();
OptionDialog.setTitle("TestInfo");
RecyclerViewAdapter adapter = new RecyclerViewAdapter(myValues, img1);
recyclerView = v.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(layoutManager);
butClose = v.findViewById(R.id.butClose);
OptionDialog.setView(v);
OptionDialog.setCancelable(true);
butClose.setBackgroundColor(Color.CYAN);
butClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
OptionDialog.dismiss();
}
});
OptionDialog.show();
}
}
Adapter
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
public ArrayList<String> myValues;
public int img1;
public RecyclerViewAdapter (ArrayList<String> myValues, int imgIn){
this.myValues= myValues;
this.img1 = imgIn;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View listItem = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item, parent, false);
return new MyViewHolder(listItem);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.myTextView.setText(myValues.get(position));
holder.img.setImageResource(R.drawable.star);
}
@Override
public int getItemCount() {
return myValues.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
private ImageView img;
private TextView myTextView;
public MyViewHolder(View itemView) {
super(itemView);
myTextView = itemView.findViewById(R.id.textview_1);
img = itemView.findViewById(R.id.imag);
}
}
}
Ответы (1 шт):
Автор решения: Syorito Hatsuki
→ Ссылка
Стоило бы создать модель для того что бы сувать в каждую карточку свои параметры, вот хороший пример который не сильно отличается от твоего кода
https://www.androidhive.info/2016/01/android-working-with-recycler-view/
Тут используется 3 TextView но думаю не такой большой проблемой будет заменить TextView на ImageView :)