Как получить значения из RecyclerView, чтобы детализировать деятельность - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть активность, чтобы показать свои данные.Содержит RecyclerView с CardView.Я получаю значения от веб-службы.Но показывает только 2 из них в CardView.Когда я нажимаю на CardView, начинается новое действие для деталей.И в этом упражнении я хочу заполнить компоненты значениями.Мне нужна помощь в этом.Как я могу сделать это?Должен ли я снова вызвать веб-сервис с запросом, или есть какие-нибудь возможные способы сделать это в Android?

Я пытался сделать некоторые переменные статическими, но мой разум смущен, и я понятия не имею, как это сделать.Кстати, если я нахожусь не в той теме, пожалуйста, перенаправьте меня к действительной.

Вот код, который я получаю значения из веб-службы

  public void CallService(){
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://10.0.3.2:45455/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    JsonPlaceholderAPI jsonPlaceholderAPI = retrofit.create(JsonPlaceholderAPI.class);

    Call<List<Records>> call = jsonPlaceholderAPI.records();

    call.enqueue(new Callback<List<Records>>() {
        @Override
        public void onResponse(Call<List<Records>> call, Response<List<Records>> response) {
            if(!response.isSuccessful()){
                Log.v("CODE : " , String.valueOf(response.code()));
                return;
            }
            InitData(response.body());
        }
        @Override
        public void onFailure(Call<List<Records>> call, Throwable t) {
            Log.v("ERROR :  " , t.getMessage());
          }
    });

Вот InitData Для проходных значенийв RecyclerView.

public void InitData(List<Records> body){
    List<Records> record;
    record = body;
    for(Records records : record) {
        arrayList.add(new RecyclerLayout(" KODU : " + records.getKODU() , "AÇIKLAMA : " + records.getACIKLAMA()));
        adapter = new RecyclerAdapter(arrayList);
    }
    recyclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

Вот перенаправление на детальный код активности

@Override
public void onBindViewHolder(final MyViewHolder holder , final int position) {
    holder.kod.setText(arrayList.get(position).getKodu());
    holder.aciklama.setText(arrayList.get(position).getAciklama());
    holder.view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Context context = holder.view.getContext();
         //   System.out.println("CLICKED " +position);
            Intent intent = new Intent(context, KayitDetay.class);

            context.startActivity(intent);
        }
    });

Вот мой POJO без геттеров и сеттеров (они в нем, но я просто не вставляюэто здесь)

 @SerializedName("KODU")
@Expose
private String kODU;
@SerializedName("ACIKLAMA")
@Expose
private String aCIKLAMA;
@SerializedName("KAPALI_FL")
@Expose
private boolean kAPALIFL;
@SerializedName("TARIH")
@Expose
private String tARIH;
@SerializedName("TUTAR")
@Expose
private double tUTAR;
@SerializedName("DURUM")
@Expose
private int dURUM;

Я хочу увидеть свои значения в другой деятельности.

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Вы можете передать значение, используя адаптер формы Intent, в действие.

Intent intent = new Intent(context, KayitDetay.class); intent.putEXtra("Key",arrayList.get(position).getAciklama()) context.startActivity(intent);

Вы можете получить эти значения в KayitDetay Activity, используя следующий код: // чтобы получить одну строкуСтроковое значение = intent.getStringEXtra ("Ключ")

0 голосов
/ 27 декабря 2018

Создайте интерфейс слушателя и позвольте вашему Activity реализовать его.

public interface OnItemClickListener {
    void onItemClick(Records record);
}

В вашем Activity:

public class MainActivity implements OnItemClickListener {

    @Override
    public void onItemClick(Records record) {
        // handle Item click data
        // pass record data to details activity here
    }
}

В вашем адаптере:

  // declare this globally
  public OnItemClickListener onItemClickListener ;

  // ViewHolder
      @Override
        public void onBindViewHolder(VideoHolder holder, int position) {
              holder.view.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            onItemClickListener .onItemClick(arrayList.get(position));
                        }
                    });
                }
0 голосов
/ 27 декабря 2018

замените это:

Intent intent = new Intent(context, KayitDetay.class);

context.startActivity(intent);

на

Intent intent = new Intent(context, KayitDetay.class);
intent.putExtra("key",arrayList.get(position));
context.startActivity(intent);

, после чего на подробном экране извлеките ключ с помощью связки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...