我已经创建了一个带适配器的RecyclerView,但是我需要创建一个带有文本的ImageView,但是我的“主”页面名为“ TAGS”,仅填充在我的列表中!
但是我需要此页面This adapter make when the image has pressed the textview change the color!, but on my 'front-end which is my page called TAGS' can't 'add image with string'看看我的无效的di_tags ,它们添加了相同的图片LOL。
我可以添加诸如DICategorias.add(“ Astrologia”,R.drawable.image1)之类的东西吗?还是我需要为每个位置的图像创建另一个列表?还是我需要创建另一个recyclerview?因为Thats is my 'View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_marca_tag_servico_layout, parent, false); layout from adapter是因为如果您看到第一个图像,适配器会添加相同的图像...我需要添加45个图像,我只想知道如何添加在di_tags上创建带有字符串和图像“连接”的列表。
我试图在di_tags上创建一个整数列表,但不起作用。我只需要一个类似'DICategorias.add(“ ASTROLOGIA”)+ R.drawable.image'的选择。
我的DI_TAGS.JAVA页面
public class DITags extends AppCompatActivity implements RecyclerViewAdapter2.OnRecyclerViewItemClickListener {
RecyclerView DICategoriasRecyclerView;
RecyclerViewAdapter2 recyclerViewAdapter2;
List<String> DICategorias;
ArrayList<Integer> array_image;
private Button DIBotaoContinuarTag;
int selectedItemCount;
Bundle bundle;
HashMap<Integer, List<String>> DICategoriasData = new HashMap<Integer, List<String>>();
private List<String> listResult = new ArrayList<String>();
ArrayList<TagsModel> taglista = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
//=============================
ArrayList<String> Arquitetura = new ArrayList<String>();
DICategoriasData.put(0, Arquitetura);
ArrayList<String> Astrologia = new ArrayList<String>();
DICategoriasData.put(1, Astrologia);
ArrayList<String> Atualidades = new ArrayList<String>();
DICategoriasData.put(2, Atualidades);
ArrayList<String> Autoconhecimento = new ArrayList<String>();
DICategoriasData.put(3, Autoconhecimento);
ArrayList<String> Automotores = new ArrayList<String>();
DICategoriasData.put(4, Automotores);
ArrayList<String> Beleza = new ArrayList<String>();
DICategoriasData.put(5, Beleza);
ArrayList<String> Casamento = new ArrayList<String>();
DICategoriasData.put(6, Casamento);
ArrayList<String> Decoracao = new ArrayList<String>();
DICategoriasData.put(7, Decoracao);
ArrayList<String> Dicas = new ArrayList<String>();
DICategoriasData.put(8, Dicas);
ArrayList<String> Diversao = new ArrayList<String>();
DICategoriasData.put(9, Diversao);
ArrayList<String> Educacao = new ArrayList<String>();
DICategoriasData.put(10, Educacao);
ArrayList<String> Empreendedorismo = new ArrayList<String>();
DICategoriasData.put(11, Empreendedorismo);
ArrayList<String> Esportes = new ArrayList<String>();
DICategoriasData.put(12, Esportes);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ditags);
getSupportActionBar().hide();
di_tags();
di_tags1();
DICategoriasRecyclerView = findViewById(R.id.DICategoriasRecyclerView);
selectedItemCount = 0;
recyclerViewAdapter2 = new RecyclerViewAdapter2(DICategorias, this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
DICategoriasRecyclerView.setLayoutManager(linearLayoutManager);
DICategoriasRecyclerView.setLayoutManager(new GridLayoutManager(this,2));
DICategoriasRecyclerView.setHasFixedSize(true);
recyclerViewAdapter2.notifyDataSetChanged();
DIBotaoContinuarTag = (Button) findViewById(R.id.DIBotaoContinuarTag);
DIBotaoContinuarTag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDIContinuarTag();
}
});
DICategoriasRecyclerView.setAdapter(recyclerViewAdapter2);
}
public void di_tags1() {
// TagsDaMarcaData = new HashMap<String, List<String>>();
// ARQUITETURA fica na posição 0
taglista.add(new TagsModel("ARQUITETURA", R.drawable.categorias_arquitetura));
// ASTROLOGIA fica na posição 1
taglista.add(new TagsModel("ASTROLOGIA", R.drawable.categorias_astrologia));
// ATUALIDADES fica na posição 2
taglista.add(new TagsModel("ATUALIDADES", R.drawable.categorias_atualidades));
// AUTOCONHECIMENTO fica na posição 3
taglista.add(new TagsModel("AUTOCONHECIMENTO", R.drawable.categorias_autoconhecimento));
// AUTOMOTORES fica na posição 4
taglista.add(new TagsModel("AUTOMOTORES", R.drawable.categorias_automotores));
// BELEZA fica na posição 5
taglista.add(new TagsModel("BELEZA", R.drawable.categorias_beleza));
// CASAMENTO fica na posição 6
taglista.add(new TagsModel("CASAMENTO", R.drawable.categorias_casamento));
// DECORAÇÃO fica na posição 7
taglista.add(new TagsModel("DECORAÇÃO", R.drawable.categorias_decoracao));
// DICAS fica na posição 8
taglista.add(new TagsModel("DICAS", R.drawable.categorias_dicas));
// DIVERSÕES fica na posição 9
taglista.add(new TagsModel("DIVERSÕES", R.drawable.categorias_diversao));
// EDUCAÇÃO fica na posição 10
taglista.add(new TagsModel("EDUCAÇÃO", R.drawable.categorias_educacao));
// EMPREENDEDORISMO fica na posição 11
taglista.add(new TagsModel("EMPREENDEDORISMO", R.drawable.categorias_empreendedorismo));
// ENTRETENIMENTO fica na posição 12
taglista.add(new TagsModel("ENTRETENIMENTO", R.drawable.categorias_entretenimento));
// ESPORTES fica na posição 13
taglista.add(new TagsModel("ESPORTES", R.drawable.categorias_esportes));
}
public void di_tags() {
DICategorias = new ArrayList<String>();
// TagsDaMarcaData = new HashMap<String, List<String>>();
// ARQUITETURA fica na posição 0
DICategorias.add("ARQUITETURA");
// ASTROLOGIA fica na posição 1
DICategorias.add("ASTROLOGIA");
// ATUALIDADES fica na posição 2
DICategorias.add("ATUALIDADES");
// AUTOCONHECIMENTO fica na posição 3
DICategorias.add("AUTOCONHECIMENTO");
// AUTOMOTORES fica na posição 4
DICategorias.add("AUTOMOTORES");
// BELEZA fica na posição 5
DICategorias.add("BELEZA");
// CASAMENTO fica na posição 6
DICategorias.add("CASAMENTO");
// DECORAÇÃO fica na posição 7
DICategorias.add("DECORAÇÃO");
// DICAS fica na posição 8
DICategorias.add("DICAS");
// DIVERSÕES fica na posição 9
DICategorias.add("DIVERSÕES");
// EDUCAÇÃO fica na posição 10
DICategorias.add("EDUCAÇÃO");
// EMPREENDEDORISMO fica na posição 11
DICategorias.add("EMPREENDEDORISMO");
// ESPORTES fica na posição 12
DICategorias.add("ESPORTES");
}
public void openDIContinuarTag() {
SparseBooleanArray asd = recyclerViewAdapter2.sparseBooleanArray;
ArrayList<String> ListaFinal = new ArrayList<String>();
ListaFinal.clear();
final int checkedItemCount = asd.size();
for (int i = 0; i < checkedItemCount; i++) { // loop em todos os items... mas o Toast Sobrescreve a outra mensagem.
int key = asd.keyAt(i);
if (asd.get(key)) {
List<String> ListResult = DICategoriasData.get(key);
ListaFinal.add(String.valueOf(key));
for (int z = 0; z < (ListResult.size()); z++) { // Faz o Loop dentro de todos os itens da sublista
String asdasd = ListResult.get(z);
ListaFinal.add(asdasd);
}
} else {
// item was in the sparse array, but not checked.
}
}
Intent intent = new Intent(this, DISubCategorias.class);
intent.putStringArrayListExtra("Result", ListaFinal);
startActivity(intent);
}
// quando o usuário clicar no item na lista RecyclerView, nosso adaptador criado invocará a seguinte função e passará a posição.
@Override
public void selectedItemCount(int count) {
selectedItemCount = count;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
}
MY RecyclerViewAdapter2
public class RecyclerViewAdapter2 extends RecyclerView.Adapter<RecyclerViewAdapter2.ViewHolder> {
List<String> TagsDaMarca;
List<String> SubServicoTagsDaMarca;
List<String> DICategorias;
HashMap<Integer, List<String>> ListaCatSubCat = new HashMap<Integer, List<String>>();
public static SparseBooleanArray sparseBooleanArray;
// for identifying: in list which items are selected
OnRecyclerViewItemClickListener listener;
int meutotal = 0;
public RecyclerViewAdapter2(List<String> TagsDaMarca1, OnRecyclerViewItemClickListener listener) {
TagsDaMarca = TagsDaMarca1;
SubServicoTagsDaMarca = TagsDaMarca1;
DICategorias = TagsDaMarca1;
sparseBooleanArray = new SparseBooleanArray();
this.listener = listener;
}
@Override
public RecyclerViewAdapter2.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_marca_tag_servico_layout, parent, false);
return new RecyclerViewAdapter2.ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerViewAdapter2.ViewHolder holder, int position) {
String item = DICategorias.get(position);
if (item.equals("0")) {
holder.itemTextView.setText("ARQUITETURA");
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_arquitetura);
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("1")) {
holder.itemTextView.setText("ASTROLOGIA");
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_astrologia);
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("2")) {
holder.itemTextView.setText("ATUALIDADES");
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_atualidades);
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("3")) {
holder.itemTextView.setText("AUTOCONHECIMENTO");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_autoconhecimento);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("4")) {
holder.itemTextView.setText("AUTOMOTORES");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_automotores);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("5")) {
holder.itemTextView.setText("BELEZA");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_beleza);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("6")) {
holder.itemTextView.setText("CASAMENTO");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_casamento);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("7")) {
holder.itemTextView.setText("DECORAÇÃO");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_decoracao);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("8")) {
holder.itemTextView.setText("DICAS");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_dicas);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("9")) {
holder.itemTextView.setText("DIVERSÕES");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_diversao);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("10")) {
holder.itemTextView.setText("EDUCAÇÃO");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_educacao);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("11")) {
holder.itemTextView.setText("EMPREENDEDORISMO");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.DICategoriasIcones.setImageResource(R.drawable.sub_categorias_empreendedorismo);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
} else if (item.equals("12")) {
holder.itemTextView.setText("ESPORTES");
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
else {
holder.itemTextView.setText(item);
if (sparseBooleanArray.get(position)) {
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
} else {
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(190, 190, 190));
}
}
//holder.itemTextView.setText(SubTagsDaMarca.get(position));
}
@Override
public int getItemCount() {
if (TagsDaMarca != null) {
return TagsDaMarca.size();
}else if (SubServicoTagsDaMarca != null) {
return SubServicoTagsDaMarca.size();
}else if (DICategorias != null) {
return DICategorias.size();
}
return 0;
}
/******** View Holder Class*/
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView itemTextView;
ImageView DICategoriasIcones;
public TextView alert;
public ViewHolder(View itemView) {
super(itemView);
itemTextView = itemView.findViewById(R.id.itemTextView);
itemTextView.setOnClickListener(this);
DICategoriasIcones = itemView.findViewById(R.id.DICategoriasIcones);
DICategoriasIcones.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (!sparseBooleanArray.get(getAdapterPosition())) {
if (meutotal < 3) {
sparseBooleanArray.put(getAdapterPosition(), true);
notifyItemChanged(getAdapterPosition());
meutotal = meutotal + 1;
}
} else // if clicked item is already selected
{
sparseBooleanArray.put(getAdapterPosition(), false);
notifyItemChanged(getAdapterPosition());
meutotal = meutotal - 1;
}
}
}
public interface OnRecyclerViewItemClickListener {
public void selectedItemCount(int count);
}
public class SubCategoriasHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public SubCategoriasHolder(View itemView) {
super(itemView);
}
@Override
public void onClick(View v) {
}
}
}
在我的DITags.java上,我还有另一个列表,该列表是每个类别的“子类别”,并且我将带有intent.putStringArrayListExtra("Result", ListaFinal);
的“子类别”传递给另一个意图,这是子类别的一部分。
答案 0 :(得分:1)
首先创建一个像这样的模型类
public class TagsModel {
String name;
int images;
public TagsModel(String name, int images) {
this.name = name;
this.images = images;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getImages() {
return images;
}
public void setImages(int images) {
this.images = images;
}
}
然后像这样在TAG_Activity中声明一个数组列表
ArrayList<TagsModel> taglist = new ArrayList<>();
然后像这样将数据添加到此ArrayList
public void di_tags() {
taglist.add(new TagsModel("data1", R.mipmap.ic_launcher));
taglist.add(new TagsModel("data1", R.mipmap.ic_launcher));
taglist.add(new TagsModel("data1", R.mipmap.ic_launcher));
taglist.add(new TagsModel("data1", R.mipmap.ic_launcher));
}
最后将标签列表传递给您的适配器
Your_Adapter adp = new Your_Adapter(getApplicationContext(), taglist);
Your_recyclerview.setAdapter(adp );
adp .notifyDataSetChanged();
也不要忘记将适配器中的数据类型更改为TagsModel
RecyclerViewAdapter2.java 在适配器中的更改如下
ArrayList<TagsModel> TagsDaMarca;//change like this
ArrayList<TagsModel> SubServicoTagsDaMarca;//change like this
ArrayList<TagsModel> DICategorias;//change like this
HashMap<Integer, List<String>> ListaCatSubCat = new HashMap<Integer, List<String>>();
public static SparseBooleanArray sparseBooleanArray;
// for identifying: in list which items are selected
OnRecyclerViewItemClickListener listener;
int meutotal = 0;
public RecyclerViewAdapter2(ArrayList<TagsModel> TagsDaMarca1, OnRecyclerViewItemClickListener listener) {
TagsDaMarca = TagsDaMarca1;
SubServicoTagsDaMarca = TagsDaMarca1;
DICategorias = TagsDaMarca1;
sparseBooleanArray = new SparseBooleanArray();
this.listener = listener;
}
@Override
public RecyclerViewAdapter2.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_marca_tag_servico_layout, parent, false);
return new RecyclerViewAdapter2.ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerViewAdapter2.ViewHolder holder, int position) {
TagsModel item = DICategorias.get(position);//change like this
holder.itemTextView.setText(item.getName());
holder.DICategoriasIcones.setImageResource(item.getImages());
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(255, 0, 167));
holder.DICategoriasIcones.setEnabled(false);
holder.itemTextView.setEnabled(false);
现在尝试为字符串调用 item.getName()**,为图像调用** item.getImages()