java - studio - recyclerview hermosa programacion
Regrese a la actividad anterior con un poco de "poner más" en el botón de un recicladorVer artículo (4)
No hay setOnItemClickListener
disponible en RecyclerView
, por lo que necesita crear su propio oyente de clics en su RecyclerView
, simplemente revise la publicación , entonces debería poder hacerlo.
¡Espero que esto ayude!
Quiero pasar una actividad previa de datos al hacer clic en Elemento en la vista de reciclador y mostrarlo en Editar texto.
Este es el código que he usado para pasar datos de listview a la actividad anterior
Quiero hacer lo mismo con Recyclerview
// Llamar a segunda actividad
public static final int REQUEST_CODE = 100;
Intent dateintent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(dateintent, REQUEST_CODE);
// onClick of listview pasa los datos a la actividad anterior
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView txt = (TextView) view.findViewById(R.id.textView);
String str = txt.getText().toString();
Intent intent = new Intent();
intent.putExtra("data",str);
setResult(RESULT_OK,intent);
finish();
}
});
// Después de obtener los datos, muestra los datos en el primer cuadro de edición de actividad
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
String data= data.getStringExtra("data");
if (data!= null) {
edittext.setText(data);
}
}
}
}
Primero crea esta interfaz
public interface RunnableValue {
public void run(Object obj);
}
2.ThisActividad principal añadir
RunnableValue run=new RunnableValue() {
@Override
public Bundle run(Object obj) {
String str = obj.toString();
Intent intent = new Intent();
intent.putExtra("data",str);
setResult(RESULT_OK,intent);
finish();
}
};
mAdapter = new SearchAdapter(dataSet,run);
Este adaptador RecyclerView
public SearchAdapter(List<String> dataSet,RunnableValue runnableValue) { mDataSet = dataSet; this.runnableValue=runnableValue; } public static class SearchHolder extends RecyclerView.ViewHolder { private final TextView textView; public SearchHolder(View v) { super(v); v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { runnableValue.run(getTextView().toString()); } }); textView = (TextView) v.findViewById(R.id.txtSearchItem); } public TextView getTextView() { return textView; }
}
RecyclerView no tiene un setOnItemClickListener como lo hizo su predecesor ListView. Sin embargo, eso no debería impedirnos hacer lo que queremos hacer. Entonces, reinventamos la rueda y hacemos nuestro propio OnItemClickListener para su RecyclerView. Aquí hay una guía paso a paso.
Cree una interfaz llamada OnItemClickListener creando un nuevo archivo llamado OnItemClickListener.java con un método vacío llamado onItemClick.
public interface OnItemClickListener { public void onItemClick(View view , int position); }
Cree una variable estática en su adaptador llamado
static OnItemClickListener mItemClickListener;
Configure onClickListener en su ViewHolder personalizado con una llamada a nuestro método onItemClick como tal
@Override public void onClick(View view) { mItemClickListener.onItemClick(view, getPosition()); }
Cree un método público llamado SetOnItemClickListener en su clase de adaptador
public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) { this.mItemClickListener = mItemClickListener; }
SetOnItemClickListener en su adaptador personalizado RecyclerView
((NameOfYourAdapter) mAdapter).SetOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View view, int position) { if(view != null) { TextView txt = (TextView) view.findViewById(R.id.textView); String str = txt.getText().toString(); Intent intent = new Intent(); intent.putExtra("data",str); setResult(RESULT_OK, intent); //close this Activity... finish(); } } });
Deberias hacer eso. ¡Si tiene alguna pregunta, sientase con libertad de preguntar!
Sigue la solución de Jacob aquí . Esto agrega oyente para RecyclerView. Luego, haz lo mismo que has hecho en ListView.