【问题标题】:How can i add ImageView on RecyclerView 'list' on my 'main' page?如何在“主”页面上的 RecyclerView“列表”中添加 ImageView?
【发布时间】:2018-10-23 19:22:47
【问题描述】:

我已经创建了一个带有适配器的 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' 看看我的 Public void 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);
 }

}

我的 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); 传递“子类别”以获得另一个意图,即子类别部分。

我有这个循环限制用户最多 3 个类别

【问题讨论】:

    标签: android-studio android-recyclerview android-imageview android-adapter


    【解决方案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

        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));
    }
    

    最后将 taglist 传递给你的适配器

    Your_Adapter adp = new Your_Adapter(getApplicationContext(), taglist);
    Your_recyclerview.setAdapter(adp );
    adp .notifyDataSetChanged();
    

    另外不要忘记将适配器中的 Datatype 更改为 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() **for string 和 **item.getImages() for images

    【讨论】:

    • 我收到了错误RecyclerViewAdapter2 (java.util.List&lt;java.lang.String&gt;, com.example.fqrgotten.RecyclerViewAdapter2.OnRecyclerViewItemClickListener) in RecyclerViewAdapter2 cannot be applied to (android.content.Context, java.util.ArrayList&lt;com.example.fqrgotten.TagsModel&gt;
    • 当我放 'taglist.add(new TagsModel("ARQUITETURA", "R.drawable.image1"));我收到另一个错误TagsModel (String, int) in TagsModel cannot be applied to (String, java.lang.String)
    • @PinhaDoido 删除双引号 "R.drawable.image1" 并按照我上面所说的那样放置。可绘制图像类型是整数而不是字符串
    • @PinhaDoido 请显示发生错误的代码
    • 我将使用适配器编辑我的问题以便更好地理解。
    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多