Recyclerview не кликабельно android studio (может быть, мой код ошибки?) - PullRequest
1 голос
/ 27 февраля 2020

, так что у меня есть вид переработчика, который имеет внутри 2 метки и изображение. Мне нужно, когда щелкают по этому ресиверу, чтобы перейти ко второму виду деятельности. Я не знаю, что я делаю не так. Я имею в виду Мой реселлер все еще не активен

Основной код активности:

RecyclerView relative1 = (RecyclerView) findViewById(R.id.result_list);
        relative1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                // viewResults class is the class that starts the second activity.
                startActivity(new Intent(getApplicationContext(),ViewResults.class));
            }
        });

И это ViewResults. java

public class ViewResults extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     //here i try to start the new activity when recycler view is clicked
        setContentView(R.layout.secondActivity);
    }
}

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Если вы хотите установить setOnClick из своего класса активности, то создайте интерфейс в своем классе адаптера. введите код адаптера продувки.

public class AdapterClass_Recycler extends RecyclerView.Adapter<AdapterClass_Recycler.ViewClass> {
Context context;
private static ClickListener clickListener;

public AdapterClass_Recycler(MainActivity mainActivity) {

    this.context = mainActivity;
}


@NonNull
@Override
public ViewClass onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    LayoutInflater layoutInflater = LayoutInflater.from(context);
    View view = layoutInflater.inflate(R.layout.item_view, null);

    return new ViewClass(view);
}

@Override
public void onBindViewHolder(@NonNull ViewClass viewClass, int i) {


}

@Override
public int getItemCount() {
    return length;
}


public class ViewClass extends RecyclerView.ViewHolder implements View.OnLongClickListener, View.OnClickListener {


    public ViewClass(@NonNull View itemView) {
        super(itemView);

        itemView.setOnClickListener(this);
        itemView.setOnLongClickListener(this);


    }

    @Override
    public void onClick(View v) {
        clickListener.onItemClick(getAdapterPosition(), v);
    }

    @Override
    public boolean onLongClick(View v) {
        clickListener.onItemLongClick(getAdapterPosition(), v);
        return false;
    }

}


public void setOnItemClickListener(ClickListener clickListener) {
    AdapterClass_Recycler.clickListener = clickListener;
}

public interface ClickListener {
    void onItemClick(int position, View v);
    void onItemLongClick(int position, View v);
}

}

Затем установите onclick от вашей активности

 adapterClassObject.setOnItemClickListener(new AdapterClass_Recycler.ClickListener() {
        @Override
        public void onItemClick(int position, View v) {
            Toast.makeText(MainActivity.this, "Click"+position, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onItemLongClick(int position, View v) {
            Toast.makeText(MainActivity.this, "Long"+position, Toast.LENGTH_SHORT).show();
        }
    });
0 голосов
/ 28 февраля 2020

В своем классе адаптера используйте holder.itemView.setOnClickListener

holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           Context context = holder.itemView.getContext();
           Toast.makeText(context, "Your logic comes here", Toast.LENGTH_SHORT).show(); 
        }
    })

И удалите этот блок кода, потому что вам нужно установить прослушиватели щелчков для отдельных представлений в RecyclerView, а не для RecyclerView в целом.

recyclerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...