recherche

Maison  >  Questions et réponses  >  le corps du texte

android - recyclerview嵌套recyclerview比较好的解决方案

像这种需要recyclerview嵌套recyclerview的情况有没有比较好的解决方案

高洛峰高洛峰2873 Il y a quelques jours1033

répondre à tous(4)je répondrai

  • 迷茫

    迷茫2017-04-18 09:20:45

    Pourquoi la première impression que j'ai vue était 流式布局 FlowLayout, une présentation de flux GitHub, produite par Google

    Votre dynamique addView() peut aussi se faire

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:20:45

    Même demande, alors que j'avais des besoins similaires auparavant, si le contenu n'était pas trop important, j'imbriquerais une liste/recycleur View et jetterais tous les événements tactiles pour éviter les conflits de glissement. Ce n'est vraiment pas très élégant.

    répondre
    0
  • 怪我咯

    怪我咯2017-04-18 09:20:45

    À mon avis, ce n'est pas un recyclerView imbriqué. Un recyclerView peut le gérer. Il lui suffit d'afficher différentes données de liste et différents éléments. Mon idée est de créer un nouveau modèle de base dont les beans des deux sources de données héritent. à partir du baseModel, ou voir Le code n'est pas clair

    public class ModelBase {
    
        public int BEAN_SORT = -1;
        public int BEAN_TYPE = -1;
    }
    
    
      public class AnimalModel extends ModelBase {
    
        private long id;
        private String name;
        private int age;
        private String address;
        }

    classe publique PersonModel étend ModelBase {

    identifiant long privé;
    nom de chaîne privé;
    âge int privé;
    >

    public class MainActivity extends AppCompatActivity {
    
        RecyclerView rvModel;
        private ArrayList<ModelBase> list;
    
        private enum BASE_TYPE {
            TYPE_PERSON, TYPE_ANIMAL
        }
    
        private ModelAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            rvModel = (RecyclerView) findViewById(R.id.recycler_view);
            list = new ArrayList<ModelBase>();
            rvModel.setLayoutManager(new LinearLayoutManager(this));
            bindData();
            adapter = new ModelAdapter();
            rvModel.setAdapter(adapter);
        }
    
        private void bindData() {
            PersonModel person1 = new PersonModel(1, "大白", 25, "2017-02-13");
            list.add(person1);
            PersonModel person2 = new PersonModel(2, "二白", 25, "2018-06-21");
            list.add(person2);
            AnimalModel animal1 = new AnimalModel(1, "兔子", 2, "", "2016-03-15");
            list.add(animal1);
            AnimalModel animal2 = new AnimalModel(1, "兔子2", 2, "森林", "2019-02-14");
            list.add(animal2);
            PersonModel person3 = new PersonModel(3, "三白", 25, "2017-03-18");
            list.add(person3);
            AnimalModel animal3 = new AnimalModel(1, "兔子3", 2, "森林", "2015-03-15");
            list.add(animal3);
            PersonModel person4 = new PersonModel(4, "四白", 25, "2015-03-28");
            list.add(person4);
            PersonModel person5 = new PersonModel(5, "小白", 25, "2016-05-15");
            list.add(person5);
            AnimalModel animal4 = new AnimalModel(1, "兔子4", 2, "森林", "2014-03-14");
            list.add(animal4);
            Collections.sort(list, new Comparator<ModelBase>() {
                @Override
                public int compare(ModelBase model1, ModelBase model2) {
                    return model2.data.compareTo(model1.data);
                }
            });  // 排序
        }
    
        class ModelAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
            @Override
            public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                if (viewType == BASE_TYPE.TYPE_PERSON.ordinal()) {
                    return new PersonViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_person, parent, false));
                } else if (viewType == BASE_TYPE.TYPE_ANIMAL.ordinal()) {
                    return new AnimalViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_animal, parent, false));
                }
                return null;
            }
    
            @Override
            public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
                if (holder instanceof PersonViewHolder) {
                    ((PersonViewHolder) holder).tvPerson.setText(((PersonModel) list.get(position)).getName());
                }
                if (holder instanceof AnimalViewHolder) {
                    ((AnimalViewHolder) holder).tvAnimal.setText(((AnimalModel) list.get(position)).getName());
                }
            }
    
            @Override
            public int getItemCount() {
                return list.size();
            }
    
            @Override
            public int getItemViewType(int position) {
                if (list.get(position).BEAN_TYPE == 1) {
                    return BASE_TYPE.TYPE_PERSON.ordinal();
                } else if (list.get(position).BEAN_TYPE == 2) {
                    return BASE_TYPE.TYPE_ANIMAL.ordinal();
                }
                return 0;
            }
    
            class PersonViewHolder extends RecyclerView.ViewHolder {
                TextView tvPerson;
    
                public PersonViewHolder(View itemView) {
                    super(itemView);
                    tvPerson = (TextView) itemView.findViewById(R.id.tv_person);
                }
            }
    
            class AnimalViewHolder extends RecyclerView.ViewHolder {
                TextView tvAnimal;
    
                public AnimalViewHolder(View itemView) {
                    super(itemView);
                    tvAnimal = (TextView) itemView.findViewById(R.id.tv_animal);
                }
            }
        }
    
    你可以照着列子敲一下 bean省去了set和get方法 布局文件也是很简单
    
    

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:20:45

    Pourquoi devez-vous utiliser recyclerView lorsque vous utilisez expandListView

    répondre
    0
  • Annulerrépondre