tutorial studio recyclerview programacion make how hermosa ejemplo create card and java android android-intent android-recyclerview

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);

  1. 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.

  1. 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); }

  2. Cree una variable estática en su adaptador llamado

    static OnItemClickListener mItemClickListener;

  3. 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()); }

  4. Cree un método público llamado SetOnItemClickListener en su clase de adaptador

    public void SetOnItemClickListener(final OnItemClickListener mItemClickListener) { this.mItemClickListener = mItemClickListener; }

  5. 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.