簡體   English   中英

如何從RECYCLERVIEW中的選定項目獲取TEXT VIEW值

[英]How to get a TEXT VIEW value from selected item in RECYCLERVIEW

我正在嘗試從RecyclerView中的選定項目中獲取TextView值,並將該值發送到其他活動。 我的RecyclerView布局文件有兩個TextView,一個用於名字和姓氏,另一個用於電子郵件。 我發現recyclerview不支持LIST VIEW之類的某些功能,如果有人可以為我提供一些建議,這是我的代碼。


import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.text.Editable;
import android.text.Spannable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.recyclerview.widget.RecyclerView;

import com.example.lab.Activities.MainActivity;
import com.example.lab.Activities.ModifyPers;
import com.example.lab.Activities.NewPersActivity;
import com.example.lab.Entities.Personne;

import java.util.List;

public class ApiPersListAdapter extends RecyclerView.Adapter<ApiPersListAdapter.ViewHolder> {
    TextView text1;
    Handler handler =new Handler();
String s;

    private Context context;
private List<Personne> list;
String nom;

public ApiPersListAdapter(Context context, List<Personne> list) {
        this.context = context;
        this.list = list;
        }

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.recyclerview_api_list_item, parent, false);
        return new ViewHolder(v);
        }

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
        Personne p = list.get(position);
      holder.nom_pre.setText(p.getPrenom()+" "+p.getNom());

    holder.email.setText(p.getEmail());



        }


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

public   class ViewHolder extends RecyclerView.ViewHolder {
    public TextView nom_pre,email;


    public ViewHolder(View itemView) {
        super(itemView);
        nom_pre = itemView.findViewById(R.id.nom_pren);
        email = itemView.findViewById(R.id.email);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(itemView.getContext(), ModifyPers.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               Log.v("nom",nom);
               intent.putExtra("key_prenom",nom);

                itemView.getContext().startActivity(intent);
            }
        });


    }

}

}

在你itemView.setOnClickListenerViewHolder類,在該行intent.putExtra("key_prenom",nom); ,將變量nom替換為:

 list.get(getAdapterPosition()).getNom();

我已經改變了您的課堂。 請看一看。 在活動中實施監聽器

 public class ApiPersListAdapter extends RecyclerView.Adapter<ApiPersListAdapter.ViewHolder> {
      public interface OnItemClickListener {
        void onItemClick(ContentItem item);
    }
     private final OnItemClickListener listener;
    TextView text1;
    Handler handler =new Handler();
String s;

    private Context context;
private List<Personne> list;
String nom;

public ApiPersListAdapter(Context context, List<Personne> list,OnItemClickListener listener) {
        this.context = context;
        this.list = list;
        this.listener = listener;
        }

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(context).inflate(R.layout.recyclerview_api_list_item, parent, false);
        return new ViewHolder(v);
        }

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
 holder.bind(items.get(position), listener);




        }


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

public   class ViewHolder extends RecyclerView.ViewHolder {
    public TextView nom_pre,email;


    public ViewHolder(View itemView) {
        super(itemView);
        nom_pre = itemView.findViewById(R.id.nom_pren);
        email = itemView.findViewById(R.id.email);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onItemClick(item);
            }
        });

您可以在onCreateViewHolder上嘗試

LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
View v = inflater.inflate(R.layout.recyclerview_api_list_item, null);

要獲取或設置R.layout.recyclerview_api_list_item recycleview的textview的值,您需要首先找到該視圖,以便可以通過定義的視圖訪問它們。

v.findViewById(R.id.textviewID1);
v.findViewById(R.id.textviewID2);

然后返回視圖

return new ViewHolder(v);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM