Как я могу загрузить новый RecycleView? - PullRequest
0 голосов
/ 25 октября 2018

Мне нужна помощь!Я использую RecycleView с Retrofit, мой сервис уже возвращает JSON, и я уже все правильно отображаю.

Но когда я нажимаю на любой элемент, я хочу перезагрузить этот recycleview с другимиdata.

Что может быть лучше, чтобы открыть новое действие с этими данными или разработать подпрограмму для перезагрузки того же самого повторного просмотра с данными из другого сервиса?

Если я могу сделать второе лучшее решениеthis?

То, что я хочу сделать, - это точно такие же видео ниже, но с использованием recycleview и дооснащения, потому что это новые компоненты.https://www.youtube.com/watch?v=lvlhc_THCY8

public class TeleAdapter extends RecyclerView.Adapter<TeleAdapter.MyViewHolder> {

private List<Tele> Tele;
private Context context;

public TeleAdapter(List<Tele> Tele, Context context){
    this.Tele = Tele;
    this.context = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.Tele_categoria_item, parent,false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    holder.Name.setText(Tele.get(position).getName());
    holder.Email.setText(Tele.get(position).getUrl());
    final String music = Tele.get(position).getUrl();


}

@Override
public int getItemCount() {
    try {
        return Tele.size();
    }
    catch(Exception ex) {
        ex.printStackTrace();
    }
    return Tele.size();
}


public class MyViewHolder extends RecyclerView.ViewHolder{

    TextView Name,Email;
    String music;
    public MyViewHolder(View itemView) {
        super(itemView);
        Name = (TextView)itemView.findViewById(R.id.name);
        Email = (TextView)itemView.findViewById(R.id.email);


        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


            }
        });

    }
}
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Просто добавьте этот метод в ваш TeleAdapter

public void setData(ArrayList<Tele> tele) {
    this.tele = tele;
    notifyDataSetChanged();
}

И после получения новых данных вызовите что-то вроде этого

yourInstanceOfTeleAdapter.setData(newTeleData)

PS: очень плохая идея использовать первую заглавную букву дляимена переменных!Вместо этого используйте маленькую букву.

private List<Tele> tele;
0 голосов
/ 25 октября 2018

Примите во внимание некоторые вещи:

  1. Если модель всегда одна и та же, вы можете использовать один и тот же адаптер.Если нет, вам нужно создать и изменить активный адаптер в RecyclerView.
  2. . Если вам нужно снова получить первый список, вы должны разбить информацию на разные RecyclerView, чтобы сделать это легко,Может быть в разных фрагментах или действиях, в зависимости от потока приложения.

Надеюсь, это поможет.

...