如何在回收站视图中为多按钮设置onclick

问题描述 投票:0回答:1

我是新手,我想实施一个简单的项目来学习。但是我很难实现This photo shows 12 of the 240 buttons I made with recyclerview

此回收者视图创建一个级别列表,每个级别具有不同的信息我想在级别按钮上设置onclick,我尝试为此使用一个界面。但是onclick设置为所有recyclerview项,并且无法识别按钮

package com.guesswords.shayan.levels_list;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;

import com.guesswords.shayan.dogame.dogame;
import com.guesswords.shayan.guesswords.R;

import java.util.ArrayList;
import java.util.List;

public class Levels_list extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_levels_list);
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.Levels_list_Recyclerview);

        Level_RecyclerView_Adapter adapter=new Level_RecyclerView_Adapter(this, levelsList());

        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(adapter);

    }
    private List<Levels> levelsList(){
        List<Levels>levels=new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            Levels level=new Levels();
            level.setLevel(""+i);
            levels.add(level);
        }
        return levels;
    }


}




----------------------------------------------------------------------------




package com.guesswords.shayan.levels_list;

import android.content.Context;
import android.content.Intent;
import android.preference.TwoStatePreference;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import com.guesswords.shayan.dogame.dogame;
import com.guesswords.shayan.guesswords.MainActivity;
import com.guesswords.shayan.guesswords.R;

import java.util.List;

import static com.guesswords.shayan.guesswords.R.layout.activity_buy_gold;
import static com.guesswords.shayan.guesswords.R.layout.level_list_sample;


public class Level_RecyclerView_Adapter extends RecyclerView.Adapter<Level_RecyclerView_Adapter.MyViewHolder> {

    private Context context;
    private List<Levels> levels;


    public Level_RecyclerView_Adapter(Context context, List<Levels> levels){

        this.context = context;
        this.levels=levels;

    }



    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater =LayoutInflater.from(context);
        View view=layoutInflater.inflate(R.layout.level_list_sample,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.Bindlevels(levels.get(position));
        holder.setIsRecyclable(false);

    }

    @Override
    public int getItemCount() {
        return levels.size();
    }


    public class MyViewHolder extends RecyclerView.ViewHolder {
        private Button level1;
        private Button level2;
        private Button level3;
        private Button level4;
        private Button level5;
        private Button level6;
        private Button level7;
        private Button level8;
        private Button level9;
        private Button level10;
        private Button level11;
        private Button level12;
        private String pos;

        public MyViewHolder(final View itemView) {
            super(itemView);

            level1 = itemView.findViewById(R.id.Button_Level_1);
            level2 = itemView.findViewById(R.id.Button_Level_2);
            level3 = itemView.findViewById(R.id.Button_Level_3);
            level4 = itemView.findViewById(R.id.Button_Level_4);
            level5 = itemView.findViewById(R.id.Button_Level_5);
            level6 = itemView.findViewById(R.id.Button_Level_6);
            level7 = itemView.findViewById(R.id.Button_Level_7);
            level8 = itemView.findViewById(R.id.Button_Level_8);
            level9 = itemView.findViewById(R.id.Button_Level_9);
            level10 = itemView.findViewById(R.id.Button_Level_10);
            level11 = itemView.findViewById(R.id.Button_Level_11);
            level12 = itemView.findViewById(R.id.Button_Level_12);

        }

        public void Bindlevels(final Levels levels){

           pos = levels.getLevel();
           int i = Integer.parseInt(pos)*12;

            level1.setText(String.valueOf(i+1));
            level2.setText(String.valueOf(i+2));
            level3.setText(String.valueOf(i+3));
            level4.setText(String.valueOf(i+4));
            level5.setText(String.valueOf(i+5));
            level6.setText(String.valueOf(i+6));
            level7.setText(String.valueOf(i+7));
            level8.setText(String.valueOf(i+8));
            level9.setText(String.valueOf(i+9));
            level10.setText(String.valueOf(i+10));
            level11.setText(String.valueOf(i+11));
            level12.setText(String.valueOf(i+12));



        }


    }

}
android click
1个回答
0
投票

您为clickListener中的任何按钮设置了onBindViewHolder()

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.Bindlevels(levels.get(position));
holder.setIsRecyclable(false);


//here

//on click button level1

holder.level1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){

//do something
}
});



//on click button level2


holder.level2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){

//do something
}
});



//on click button level3


holder.level3.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){

//do something
}
});

//do the rest .............

}
© www.soinside.com 2019 - 2024. All rights reserved.