我已经使用RecyclerAdapter在RecyclerView中创建了一个列表。但是如何为每个结果值启动一个新活动?像
asd.valueAt(0,1,2)
我尝试了(0 | 1 | 2)
和(0 + 1 + 2 )
,但是都没有用。
该列表对用户有3个选择的限制。所以我需要为3个值,即(0,1,2)
或(4,3,1)
。
课程:
public class Marca_Produto extends AppCompatActivity implements RecyclerViewAdapter.OnRecyclerViewItemClickListener {
RecyclerView MarcaTagProduto;
RecyclerViewAdapter recyclerViewAdapter;
List<String> TagsDaMarca;
private Button MarcaContinuarTagBtn;
int selectedItemCount;
Bundle bundle;
HashMap<Integer,List<String>> TagsDaMarcaData = new HashMap<Integer, List<String>>();
private List<String> listResult = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
//=============================
ArrayList<String> Alimentos = new ArrayList<String>();
Alimentos.add("Saudáveis");
Alimentos.add("Doces");
Alimentos.add("Salgados");
Alimentos.add("Bebidas");
TagsDaMarcaData.put(0, Alimentos);
ArrayList<String> Beleza = new ArrayList<String>();
Beleza.add("Pele");
Beleza.add("Cabelo");
Beleza.add("Maquiagem/ Perfumaria");
TagsDaMarcaData.put(1, Beleza);
ArrayList<String> Moda = new ArrayList<String>();
Moda.add("Moda praia");
Moda.add("Lingerie");
Moda.add("Moda esportiva");
Moda.add("Casual");
Moda.add("Social");
Moda.add("Jeans");
Moda.add("Calçados");
Moda.add("Óculos/ Acessórios");
Moda.add("Bolsa");
TagsDaMarcaData.put(2,Moda );
ArrayList<String> FitnessEsporte = new ArrayList<String>();
FitnessEsporte.add("Roupas");
FitnessEsporte.add("Suplementos");
FitnessEsporte.add("Acessórios/ Utilitários");
FitnessEsporte.add("Bike/Skate");
FitnessEsporte.add("Outros");
TagsDaMarcaData.put(3,FitnessEsporte );
ArrayList<String> Automotores = new ArrayList<String>();
Automotores.add("Carro");
Automotores.add("Moto");
Automotores.add("Helicoptero");
Automotores.add("Avião");
Automotores.add("Barco");
TagsDaMarcaData.put(4,Automotores );
ArrayList<String> BebidaAlcoolica = new ArrayList<String>();
BebidaAlcoolica.add("Destilados");
BebidaAlcoolica.add("Cervejas");
BebidaAlcoolica.add("Vinho/ Champagne");
BebidaAlcoolica.add("Outros");
TagsDaMarcaData.put(5,BebidaAlcoolica );
ArrayList<String> EletronicosEletrodomesticos = new ArrayList<String>();
EletronicosEletrodomesticos.add("Celular");
EletronicosEletrodomesticos.add("Acessórios/ Utilitários");
EletronicosEletrodomesticos.add("Do lar/ Cozinha");
EletronicosEletrodomesticos.add("Outros");
TagsDaMarcaData.put(6,EletronicosEletrodomesticos );
ArrayList<String> Infantil = new ArrayList<String>();
Infantil.add("Roupas");
Infantil.add("Calçados");
Infantil.add("Brinquedo");
Infantil.add("Outros");
TagsDaMarcaData.put(7,Infantil );
ArrayList<String> Joalheria = new ArrayList<String>();
Joalheria.add("Jóias");
Joalheria.add("Semi Jóias");
Joalheria.add("Bijuterias");
TagsDaMarcaData.put(8,Joalheria );
ArrayList<String> myList9 = new ArrayList<String>();
myList9.add("OUTROS");
TagsDaMarcaData.put(9,myList9 );
//TagsDaMarcaData.put("FITNESS/ESPORTE", myList);
//TagsDaMarcaData.put("AUTOMOTORES", myList);
//TagsDaMarcaData.put("BEBIDA ALCÓOLICA", myList);
//TagsDaMarcaData.put("ELETRÔNICOS", myList);
//TagsDaMarcaData.put("INFANTIL", myList);
//TagsDaMarcaData.put("JOALHERIA", myList);
//TagsDaMarcaData.put("OUTROS", myList);
//==============================
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_marca_produto);
getSupportActionBar().hide();
MarcaTagProduto = findViewById(R.id.MarcaTagProduto);
selectedItemCount = 0;
Marca_produto_tags();
recyclerViewAdapter = new RecyclerViewAdapter(TagsDaMarca,this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
MarcaTagProduto.setLayoutManager(linearLayoutManager);
MarcaTagProduto.setHasFixedSize(true);
MarcaContinuarTagBtn = (Button)findViewById(R.id.MarcaContinuarTag);
MarcaContinuarTagBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openMarcaContinuarTag();
}
});
MarcaTagProduto.setAdapter(recyclerViewAdapter);
/****** Adding divider between items in recyclerView list*/
DividerItemDecoration dividerItemDecoration;
dividerItemDecoration = new DividerItemDecoration(this, linearLayoutManager.getOrientation());
MarcaTagProduto.addItemDecoration(dividerItemDecoration);
}
public void Marca_produto_tags()
{
TagsDaMarca = new ArrayList<String>();
// TagsDaMarcaData = new HashMap<String, List<String>>();
// Alimentos fica na posição 0
TagsDaMarca.add("ALIMENTOS");
// Beleza fica na posição 1
TagsDaMarca.add("BELEZA");
// Moda fica na posição 2
TagsDaMarca.add("MODA");
// Fitness/Esporte fica na posição 3
TagsDaMarca.add("FITNESS/ESPORTE");
// Automotores fica na posição 4
TagsDaMarca.add("AUTOMOTORES");
// Bebida Alcóolica fica na posição 5
TagsDaMarca.add("BEBIDA ALCÓOLICA");
// Eletrônicos fica na posição 6
TagsDaMarca.add("ELETRÔNICOS");
// Infantil fica na posição 7
TagsDaMarca.add("INFANTIL");
}
public void openMarcaContinuarTag() {
//===========================
// Toast.makeText(getApplicationContext(), "teste alo", Toast.LENGTH_LONG).show();
SparseBooleanArray asd = recyclerViewAdapter.sparseBooleanArray;
String str="";
String str1="";
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 = TagsDaMarcaData.get(key);
for (int z = 0; z < (ListResult.size()); z++) {
String asdasd=ListResult.get(z);
str = str + " - " +asdasd;
}
} else {
// item was in the sparse array, but not checked.
}
}
if(asd.valueAt(0)){
Intent intent = new Intent(this, Marca_Value0.class);
startActivity(intent);
}
if(asd.valueAt(1)){
Intent intent = new Intent(this, Marca_Value1.class);
startActivity(intent);
}
if(asd.valueAt(2)){
Intent intent = new Intent(this, Marca_Value2.class);
startActivity(intent);
}
if(asd.valueAt(3)){
Intent intent = new Intent(this, Marca_Value2.class);
startActivity(intent);
}
if(asd.valueAt(4)){
Intent intent = new Intent(this, Marca_Value3.class);
startActivity(intent);
}
if(asd.valueAt(5)){
Intent intent = new Intent(this, Marca_Value4.class);
startActivity(intent);
}
if(asd.valueAt(6)){
Intent intent = new Intent(this, Marca_Value5.class);
startActivity(intent);
}
if(asd.valueAt(7)){
Intent intent = new Intent(this, Marca_Value6.class);
startActivity(intent);
}
if(asd.valueAt(8)){
Intent intent = new Intent(this, Marca_Value7.class);
startActivity(intent);
}
if(asd.valueAt(9)){
Intent intent = new Intent(this, Marca_Value8.class);
startActivity(intent);
}
Toast.makeText(getApplicationContext(), str,Toast.LENGTH_LONG).show(); // FUCK
//===========================
}
@Override
public void selectedItemCount(int count) {
selectedItemCount = count;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
}
适配器:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
public static SparseBooleanArray sparseBooleanArray;
// for identifying: in list which items are selected
OnRecyclerViewItemClickListener listener;
int meutotal = 0;
List<String> produto = new ArrayList<>();
// Alimentos fica na posição 0
public RecyclerViewAdapter(List<String> itemTitles, OnRecyclerViewItemClickListener listener)
{
sparseBooleanArray = new SparseBooleanArray();
this.listener = listener;
}
public RecyclerViewAdapter(List<String> tagsDaMarca, ValueEventListener valueEventListener) {
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_marca_tag_servico_layout,parent,false);
return new RecyclerViewAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerViewAdapter.ViewHolder holder, int position) {
if (sparseBooleanArray.get(position))
{
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(114, 47, 55));
}
else
{
holder.itemTextView.setBackgroundColor(Color.TRANSPARENT);
holder.itemTextView.setTextColor(Color.rgb(100, 100, 100));
}
}
@Override
public int getItemCount() {
return produto.size();
}
/******** View Holder Class*/
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView itemTextView;
public TextView alert;
public ViewHolder(View itemView) {
super(itemView);
itemTextView = itemView.findViewById(R.id.itemTextView);
itemTextView.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);
}
}