Horizontal scrolling in android gridview

后端 未结 6 1374
闹比i
闹比i 2021-01-04 22:40

I have a grid view in my application and i need to scroll it horizontally.I have tried changing the gridview to gallery.But then only one row is available,but i need differe

6条回答
  •  爱一瞬间的悲伤
    2021-01-04 23:09

    I have already posted this answer here and here, but these questions are identical...


    There is a nice solution in Android from now on : HorizontalGridView.

    1. Gradle dependency

    dependencies {
        compile 'com.android.support:leanback-v17:23.1.0'
    }
    

    2. Add it in your layout

    your_activity.xml

    
            
    
    

    3. Layout grid element

    Create a layout for your grid element ( grid_element.xml ). I have created a simple one with only one button in it.

    
    
    
        

    4. Create an adapter

    Highly inspired by this link : https://gist.github.com/gabrielemariotti/4c189fb1124df4556058

    public class GridElementAdapter extends RecyclerView.Adapter{
    
        private Context context;
        private List elements;
    
        public GridElementAdapter(Context context){
            this.context = context;
            this.elements = new ArrayList();
            // Fill dummy list
            for(int i = 0; i < 40 ; i++){
                this.elements.add(i, "Position : " + i);
            }
        }
    
        public static class SimpleViewHolder extends RecyclerView.ViewHolder {
            public final Button button;
    
            public SimpleViewHolder(View view) {
                super(view);
                button = (Button) view.findViewById(R.id.button);
            }
        }
    
        @Override
        public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            final View view = LayoutInflater.from(this.context).inflate(R.layout.grid_element, parent, false);
            return new SimpleViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(SimpleViewHolder holder, final int position) {
            holder.button.setText(elements.get(position));
            holder.button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(context, "Position =" + position, Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
        @Override
        public int getItemCount() {
            return this.elements.size();
        }
    }
    

    5. Initialize it in your activity :

    private HorizontalGridView horizontalGridView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_activity);
        horizontalGridView = (HorizontalGridView) findViewById(R.id.gridView);
        GridElementAdapter adapter = new GridElementAdapter(this);
    
        horizontalGridView.setAdapter(adapter);
    }
    

提交回复
热议问题