Как получить вид невидимых предметов в RecyclerView - PullRequest
0 голосов
/ 11 апреля 2019

У меня проблема с RecyclerView выбора его itemview.Я искал часы, но так и не нашел ответа.Вот мой код:

              for (int i = 0; i < mAdapter.getItemCount(); i++) {
                View view = recyclerView.getChildAt(i);
                if (view != null) {
                    TextView tvIdEnt = view.findViewById(R.id.goodID_ENT_GOOD);
                    TextView tvName = view.findViewById(R.id.goodNAME_ENT_GOOD);
                    TextView tvQuan = view.findViewById(R.id.goodQUANTITY_GOOD);

                    if (!tvQuan.getText().toString().equals("")) {
                        hasGood = true;
                        String idEnt = tvIdEnt.getText().toString();
                        String name = tvName.getText().toString();
                        int qty = Integer.parseInt(tvQuan.getText().toString());

                        //insert good                  
                    }
                }
            }

Мой mAdapter имеет 10 элементов.Когда я использовал ListView, у меня было 10 детских взглядов, идеально.Но когда я использовал RecyclerView, он просто возвращает видимые элементы.Например, метод getChildAt(0) будет возвращен первый видимый элемент на экране, а не реальный первый элемент - первый элемент mAdapter.Как я могу получить все 10 предметов из RecyclerView?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Я думаю, что это невозможно, потому что Recyclerview использует одно и то же представление для каждого индекса.Это положительный момент между ListView против RecyclerView.

0 голосов
/ 11 апреля 2019

Вы можете установить просмотры в ViewHolder.Образец RecyclerView адаптер;

/**
* Created by beyazid on 11.04.2019.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

private Context context;
private LayoutInflater inflater;
private ArrayList<String> list;

public MyAdapter(Context context, ArrayList<String> list) {
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.context = context;
    this.list = list;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.my_row_for_recycler_view, parent, false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
    holder.bindItem(position);
}

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

}


public class MyViewHolder extends RecyclerView.ViewHolder {
    TextView tvDummy;
    public MyViewHolder(View itemView) {
        super(itemView);
        tvDummy = itemView.findViewById(R.id.text);
    }
    void bindItem(int pos) {
        String txt = list.get(pos);
        tvDummy.setText(txt);
    }
}

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