Sie verwenden RecyclerView, um eine Listenanzeige in der Android-Anwendungsentwicklung zu erstellen, oder? Wenn Sie eine Schaltfläche in RecyclerView einrichten und von einer Liste zu einem anderen Bildschirm wechseln, möchten Sie möglicherweise wissen, ** wie viele Schaltflächen in der Liste gedrückt wurden **. In RecyclerView.Adapter kann "welche Zifferntaste gedrückt wurde" ziemlich schnell abgerufen werden, aber ich war ein wenig süchtig danach, es in MainActivity zu verwenden. Machen Sie sich also eine Notiz.
Eine Übersicht finden Sie in diesem Artikel, da er leicht zu verstehen war. Grundlagen von RecyclerView
Das Bild der Verarbeitung, wenn die Taste zum Zeitpunkt des Bildschirmübergangs gedrückt wird, ist wie folgt. Ich möchte Ihnen sagen, welche Liste von Schaltflächen für den Übergangszielbildschirm gedrückt wurde.
RecyclerView.Adapter erbt übrigens nicht die Activty-Klasse, sodass ein Bildschirmübergang nicht möglich ist. Daher ist es erforderlich, die Nummer der auf MainActivity gedrückten Liste zu kennen und den Bildschirm zu ändern.
MainActivity
@Override
public void onClick(View view) {
int line = getLine(); //Ich möchte die Anzahl der Zeilen in der Liste erhalten, die ich irgendwie gedrückt habe
Intent hoge = new Intent(MainActivity.this, HogeActivity.class);
hoge.putExtra("line", line);
startActivity(hoge);
}
Ich möchte MainActivity verarbeiten, wenn ich die in RecyclerView enthaltene Schaltfläche drücke. Registrieren Sie OnClickListener of MainActivity im Listener von RecyclerView.Adapter. Jetzt können Sie den Listener so einstellen, dass OnClick () auf MainActivty aufgerufen wird, wenn Sie eine Schaltfläche in der Liste drücken.
RecyclerAdapter.java
public void setOnItemClickListener(View.OnClickListener listener){
m_listener = listener;
}
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
final int pos = position;
//Wenn die Schaltfläche in der Liste gedrückt wird, wird der oben registrierte Klick-Listener aufgerufen.
holder.m_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
m_listener.onClick(view);
}
});
}
MainActivity.java
RecyclerView.Adapter rAdapter = new RecycleAdapter(data);
rAdapter.setOnItemClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int line = getLine(); //Ich möchte die Anzahl der Zeilen in der Liste erhalten, die ich irgendwie gedrückt habe
Intent hoge = new Intent(MainActivity.this, HogeActivity.class);
hoge.putExtra("line", line);
startActivity(hoge);
}
});
Im aktuellen Status wird der gleiche Vorgang ausgeführt, unabhängig davon, welche Liste von Tasten Sie drücken.
RecyclerView.Adapter verfügt über eine Methode namens "onBindViewHolder". Dies ist die Methode, die jedes Mal aufgerufen wird, wenn ein Listenelement erstellt wird. Und das Argument "Position" repräsentiert die genaue Nummer der erstellten Liste.
** Implementieren Sie, um den Wert dieser Position in der Mitgliedsvariablen von RecyclerView im Klick-Listener der Schaltfläche in der Liste zu registrieren. ** ** ** ** Auf diese Weise wird beim Drücken der Schaltfläche der Wert der Anzahl der Zeilen in der Mitgliedsvariablen (m_line) von RecycleViewAdapter registriert. ** ** **
Erstellen Sie dann eine Methode, die von außen auf diese m_line
verweisen kann, und implementieren Sie sie so, dass sie in OnClick () von MainActivity aufgerufen wird.
Danach ist es in Ordnung, wenn Sie den Wert mit dem Übergangsziel "HogeActivity" erhalten und die Verarbeitung entsprechend ändern.
RecyclerAdapter.java
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
final int pos = position;
holder.m_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
m_line = pos; //Registrieren Sie die Anzahl der Zeilen
m_listener.onClick(view); //Rufen Sie Main OnClick sofort nach der Registrierung an
}
});
}
public int getLine(){
return m_line; //Holen Sie sich die Anzahl der Zeilen
}
MainActivity.java
final RecyclerView.Adapter rAdapter = new RecycleAdapter(list);
recyclerView.setAdapter(rAdapter);
((RecycleAdapter) rAdapter).setOnItemClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int line = ((RecycleAdapter) rAdapter).getLine(); //Hier m_Holen Sie sich den Wert der Linie
Intent edit = new Intent(MainActivity.this, HogeActivity.class);
edit.putExtra("line", line);
startActivity(edit);
}
});
Es ist eine Art Umweg-Implementierung, Ich konnte nur diesen Weg finden, um der Hauptaktivität die Anzahl der Zeilen mitzuteilen, die ich gedrückt habe, und so kam ich zu dieser Implementierung. Wenn es so etwas wie "Nein, wenn du Hogehoge machst, ohne das zu tun, bekommst du einen Schuss ..." gibt es mir bitte.
Da ich den Code aus der von mir erstellten App extrahiert und ein wenig geändert habe, stimmen die Variablennamen im Text und im Quellcode möglicherweise nicht überein. Bitte konvertieren Sie es im Gehirn.