代码之家  ›  专栏  ›  技术社区  ›  Code Lover

动态加载片段,内容位于RecyclerView上。已单击适配器项

  •  0
  • Code Lover  · 技术社区  · 7 年前

    新的Android和Java。 尝试在单击Recycleradapter项时通过活动/Tablayout动态加载内容片段。这是我的 bitbucket repo . 在下面嵌入recyclerview代码。

    public class PlacesAdapter extends RecyclerView.Adapter<PlacesAdapter.PlacesViewHolder> {
    
        private List<Place> mPlaces;
    
        public PlacesAdapter(List<Place> mPlaces) {
            this.mPlaces = mPlaces;
        }
    
        @NonNull
        @Override
        public PlacesViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.place_list_item, viewGroup, false);
            return new PlacesViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(@NonNull PlacesViewHolder viewHolder, int i) {
    
            Place place = mPlaces.get(i);
    
            viewHolder.itemHeading.setText(place.getPlaceTitle());
            viewHolder.itemExcerpt.setText(place.getPlaceExcerpt());
            viewHolder.itemRatings.setText(place.getPlaceRatings());
            viewHolder.itemRatingBar.setRating(Float.parseFloat(place.getPlaceRatings()));
            viewHolder.itemImage.setImageResource(place.getPlaceImage());
    
    //        viewHolder.itemCardVIew.setOnClickListener(new View.OnClickListener() {
    //            @Override
    //            public void onClick(View view) {
    //                Toast.makeText(view.getContext(), "Item Clicked " + getItemCount(), Toast.LENGTH_SHORT).show();
    //            }
    //        });
    
        }
    
        @Override
        public int getItemCount() {
            return mPlaces.size();
        }
    
        public class PlacesViewHolder extends RecyclerView.ViewHolder {
    
            public TextView  itemHeading;
            public TextView  itemExcerpt;
            public ImageView itemImage;
            public TextView  itemRatings;
            public RatingBar itemRatingBar;
            public CardView  itemCardVIew;
    
            public PlacesViewHolder(@NonNull View itemView) {
                super(itemView);
    
                itemHeading = itemView.findViewById(R.id.place_item_heading);
                itemExcerpt = itemView.findViewById(R.id.place_item_excerpt);
                itemRatings = itemView.findViewById(R.id.place_item_rating_text);
                itemRatingBar = itemView.findViewById(R.id.place_item_rating_bar);
                itemImage = itemView.findViewById(R.id.place_item_image);
                itemCardVIew = itemView.findViewById(R.id.place_card_view);
    
                itemCardVIew.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(view.getContext(), "Item Clicked! " + itemHeading.getText(), Toast.LENGTH_SHORT).show();
    
                        // load fragment
                        AppCompatActivity activity   = (AppCompatActivity) view.getContext();
                        Fragment          myFragment = new Fragment();
                        activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();
                    }
                });
    
            }
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Anmol    7 年前
    viewHolder.itemCardVIew.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 Toast.makeText(view.getContext(), "Item Clicked " + getItemCount(), Toast.LENGTH_SHORT).show();
                 FragmentManager manager = ((Activity) context).getFragmentManager();
                 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                 fragmentTransaction.replace(R.id.fragment_container, new YourFragment());
                 fragmentTransaction.addToBackStack(null); //depend's on your usecase
                 fragmentTransaction.commit();
            }
        });
    

    这应该是用于动态启动片段的代码。只需将注释代码替换为该代码即可。

    推荐文章