Как я могу добавить StickyHeaders в RecyclerView? - PullRequest
0 голосов
/ 25 мая 2019

В настоящее время я изучаю Android Studio как новичка, так что простите, если я задаю вопрос, который может показаться легким для профессионалов. Как правильно добавить StickyHeader в программу recyclerView? Я пытаюсь разработать пример шаблона, который будет иметь около 25 строк, но элементы должны быть сгруппированы в (5) различных stickyHeaders. Вот в чем проблема. Нет четких указаний о том, как это сделать, и это немного запутанно.

В настоящее время существует (5) файлов, связанных с кодом: (1) Adapter.java, (2) Item.java (3) MainActivity.java, (4) activity_main.xml и finally (5) item.xml. Я не уверен, как выполнить это кодирование stickyHeader.

(1) Вот файл Adapter.java:

public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
    private ArrayList<ExampleItem> mExampleList;

    public static class ExampleViewHolder extends RecyclerView.ViewHolder {
        public ImageView mImageView;
        public TextView mTextView1;
        public TextView mTextView2;

        public ExampleViewHolder(View itemView) {
            super(itemView);
            mImageView = itemView.findViewById(R.id.imageView);
            mTextView1 = itemView.findViewById(R.id.textView);
            mTextView2 = itemView.findViewById(R.id.textView2);
        }
    }

    public ExampleAdapter(ArrayList<ExampleItem> exampleList) {
        mExampleList = exampleList;
    }

    @Override
    public ExampleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, parent, false);
        ExampleViewHolder evh = new ExampleViewHolder(v);
        return evh;
    }

    @Override
    public void onBindViewHolder(ExampleViewHolder holder, int position) {
        ExampleItem currentItem = mExampleList.get(position);

        holder.mImageView.setImageResource(currentItem.getImageResource());
        holder.mTextView1.setText(currentItem.getText1());
        holder.mTextView2.setText(currentItem.getText2());
    }

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

(2) Вот файл item.java:

public class ExampleItem {
    private int mImageResource;
    private String mText1;
    private String mText2;

    public ExampleItem(int imageResource, String text1, String text2) {
        mImageResource = imageResource;
        mText1 = text1;
        mText2 = text2;
    }

    public int getImageResource() {
        return mImageResource;
    }

    public String getText1() {
        return mText1;
    }

    public String getText2() {
        return mText2;
    }
}

(3) Вот файл MainActivity.java:

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayList<ExampleItem> exampleList = new ArrayList<>();
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 1", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 2", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 3", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 4", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 5", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 6", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 7", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 8", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 9", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 10", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 11", "SubTitle"));
        exampleList.add(new ExampleItem(R.drawable.ic_android, "Title 12", "SubTitle"));

        mRecyclerView = findViewById(R.id.recyclerView);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new LinearLayoutManager(this);
        mAdapter = new ExampleAdapter(exampleList);

        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mAdapter);
    }
}

Я хотел бы иметь stickyHeader между несколькими темами, но не знаю, как реализовать коды stickyHeader. Все говорят, что это очень запутанно.

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