Jump to content
godrugal

Capturar textview do item selecionado RecyclerView para outra tela

Recommended Posts

Eu tenho minha tela de busca. Ao digitar, ele traz o resultado da busca. O resultado é mostrado em uma recyclerview. Meu Recyclerview foi modelado com algumas textviews e uma imagem. Queria que ao tocar no item da Recyclerview, que o texto da textview fosse passado para outra fragment (tela) que tenho. Consigo fazer até a parte da chamada da tela. Só não consigo resgatar o texto da textview na outra tela. Cheguei até a instanciar as textviews da outra tela que esta modelada o recycler.

Minha classe do adaptador:

 

public class CursosAdapterImg extends RecyclerView.Adapter<CursosAdapterImg.CursosHolder> {

List<Curso>listaCursos;
private OnNoteListener mOnNoteListener;


public CursosAdapterImg(List<Curso> listaCursos, Context context,OnNoteListener onNoteListener) {
    this.listaCursos = listaCursos;
    this.mOnNoteListener = onNoteListener;
}

@NonNull
@Override
public CursosHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View vista = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista_cursos_img, parent, false);
    RecyclerView.LayoutParams layoutParams =
            new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT
            );

    vista.setLayoutParams(layoutParams);
    return new CursosHolder(vista, mOnNoteListener);
}

@Override
public void onBindViewHolder(@NonNull CursosHolder holder, int position) {
   // holder.txtCodigo.setText(listaCursos.get(position).getCodigo().toString());

    holder.txtNome.setText(listaCursos.get(position).getNome().toString());
    holder.txtProfessor.setText(listaCursos.get(position).getProfessor().toString());
    holder.txtCategoria.setText(listaCursos.get(position).getCategoria().toString());



    if(listaCursos.get(position).getImagem()!=null){
        holder.idImagem.setImageBitmap(listaCursos.get(position).getImagem());
    }else{
        holder.idImagem.setImageResource(R.drawable.sem_foto);
    }

}

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

public class CursosHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView txtNome,txtCodigo,txtProfessor, txtCategoria;
    ImageView idImagem;

    OnNoteListener onNoteListener;

    public CursosHolder(View itemView,OnNoteListener onNoteListener) {
        super(itemView);
        txtNome= (TextView) itemView.findViewById(R.id.nomeCurso);
        //txtCodigo= (TextView) itemView.findViewById(R.id.txtCodigo);
        txtProfessor= (TextView) itemView.findViewById(R.id.Professor);
        txtCategoria= (TextView) itemView.findViewById(R.id.Categoria);
        idImagem=  itemView.findViewById(R.id.idImagem);

        this.onNoteListener = onNoteListener;
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        onNoteListener.onNoteClick(getAdapterPosition());


    }
}

public interface OnNoteListener{
    void onNoteClick(int position);

}
}

Abaixo a minha tela da busca que retorna uma Recyclerview:

 

    return vista;
}

private void carregarWEBService() {

    progresso = new ProgressDialog(getContext());
    progresso.setMessage("Buscando...");
    progresso.show();

    String url = "http://192.168.0.5/webservices/consultarListaImagemUrlNome.php?nome="+ campoNome.getText().toString();


    jsonObjectReq = new JsonObjectRequest(Request.Method.GET, url, null, this, this);
    request.add(jsonObjectReq);

}


@Override
public void onErrorResponse(VolleyError error) {

    progresso.hide();
    Toast.makeText(getContext(), "Não foi possível listar os cursos " +error.toString() , Toast.LENGTH_SHORT).show();
    Log.i("ERROR", error.toString());

}

@Override
public void onResponse(JSONObject response) {

    progresso.hide();

    Curso curso = null;
    JSONArray json = response.optJSONArray("curso"); // nome da tabela curso


    try {
        for(int i=0; i<json.length();i++){
            curso = new Curso();

            JSONObject jsonObject = null;
            jsonObject = json.getJSONObject(i);

            curso.setNome(jsonObject.optString("nome"));
            curso.setProfessor(jsonObject.optString("professor"));
            curso.setCategoria(jsonObject.optString("categoria"));
            curso.setDado(jsonObject.optString("imagem"));
            listaCursos.add(curso);
        }

        progresso.hide();
        CursosAdapterImg adapter = new CursosAdapterImg(listaCursos,getContext(),this);
        recyclerCursos.setAdapter(adapter);



    }catch (JSONException e){
        e.printStackTrace();
        progresso.hide();
        Toast.makeText(getContext(), "Não foi possível listar os cursos " +response , Toast.LENGTH_SHORT).show();

    }


}

 @Override
public void onNoteClick(int position) {

    listaCursos.get(position);

    //Falta passar os parâmetros

    consultarCursoUrl fragmentConsulta = new consultarCursoUrl();
   
 /*  Estava testando nesse bloco passagem de parâmetros para outra fragment
    Bundle arguments = new Bundle();
    arguments.putString( "professor" , "Testando a passagem");
    fragmentConsulta.setArguments(arguments); */

    FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.content_main,fragmentConsulta).commit();

}

E esse código abaixo, é minha tela que é chamada após tocar no item do recyclerview:

 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    if (getArguments() != null) {
        mParam1 = getArguments().getString(ARG_PARAM1);
        mParam2 = getArguments().getString(ARG_PARAM2);

    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View vista = inflater.inflate(R.layout.fragment_consultar_curso_url, container, false);

    campoCodigo = vista.findViewById(R.id.codigo);
    campoNome = vista.findViewById(R.id.txt_nome);
    campoCategoria = vista.findViewById(R.id.txt_categoria);
    campoProfessor = vista.findViewById(R.id.txt_professor);
    btnAtualizar = vista.findViewById(R.id.btnAtualizar);
    btnDeletar = vista.findViewById(R.id.btnDeletar);
    btnConsultar = vista.findViewById(R.id.btnConsultar);
    imgFoto = vista.findViewById(R.id.imagemId);

  /*  Estava fazendo teste de parametros nesse bloco

    Bundle arguments = getArguments();
    String nomeProfessor = arguments.getString("professor");

    campoNome.setText(nomeProfessor);
    */

    request = Volley.newRequestQueue(getContext());

    btnConsultar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            carregarWEBService();
        }
    });

    if(solicitarPermissoesVersoesSuperiores()){
        imgFoto.setEnabled(true);
    }else{
        imgFoto.setEnabled(false);
    }


    imgFoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

           carregarDialog();
        }
    });

    btnAtualizar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            carregarWEBServiceAtualizar();

        }
    });

    btnDeletar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            carregarWEBServiceDeletar();

        }
    });

    return vista;
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ELT_Yuken
      Bom, eu estou aprendendo js pelo celular da minha mãe, eu gostaria de saber como faço para criar botões que repetem uma função até eu tirar o dedo dele
    • By JuanAlmeida
      Eaí, eu vim pedir ajuda aqui porque não encontro em nenhum lugar nada para me ajudar. Eu consigo desenvolver no Android Studio tranquilamente, so que o emulator não abre de jeito nenhum, no caso abre. Mas a tela fica preta; Igual a foto. Minha config é Q6600 + 8GB RAM + GT 610 2GB, embora não seja moderna, ela seria o suficiente pra rodar o emulator. Alguem pode me dizer o que é?

    • By T635
      Estou desenvolvendo um app para medir os batimentos do usuário por meio de um sensor em seu smartwatch. Entretanto estou com um bug na linha 36, e não faço a mínima ideia de como resolver.
      O link do código é esse:
      https://pastebin.com/gwEzhCdh
    • By joaohouto
      Olá, pessoal!
       
      Estou dando início a minha caminhada no desenvolvimento nativo para Android, e durante esse percurso encontrei certa dificuldade ao tentar exibir uma notificação simples.
      Segue o código:
       
      //imports public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); gerarNotificacao(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void gerarNotificacao(){ NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon( R.drawable.ic_launcher ) .setTicker( "Título ticker de teste" ) .setContentTitle( "Título de teste" ) .setContentText( "Texto de corpo - teste" ) .setAutoCancel( true ); int id = 1; NotificationManager notifyManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notifyManager.notify( id, builder.build() ); } }  
      Obs.: Esse é um código exemplo que achei em um site aleatório da internet
      Bom, ao iniciar a tela principal a notificação não é exibida, por quê?
       
      Agradeço a quem puder ajudar. :D
    • By ELT_Yuken
      Estou começando agora, não tenho Pc, prático pelo anwriter, e droidscript (disponível na playstore)
      Estou tentando desenvolver um game, poderia, alguém por favor me ensinar a criar controles(botoes que quando eu clico enviam functions)?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.