1. add a button in activity_main.xml
2. Add a new layout of gridview page, which is called activity_gridview.xml
3. Add a new "gridview" package under com.example.gridviewexample
4. Add a new GridViewActivity class which extends AppCompatActivity
public class GridViewActivity extends AppCompatActivity {
private GridView mGv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acitivity_gridview);
mGv = findViewById(R.id.gv);
// To-Do: mGv.setAdapter
}
}
5. Go to manifests -> AndroidManifest.xml
To declare(register) an activity that we just created, i.e. .graidview.GridViewActivity
6. In MainActivity .java, we have to create an mBtn, and set its onClickListener in order to go to the next page called activity_gridview.xml
Button mBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtn = findViewById(R.id.btn_gridview);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, GridViewActivity.class);
startActivity(intent);
}
});
}
7. Now we have to write an adapter for gridview
Let MyGridViewAdapter extend BaseAdapter
Select all the following methods to implement
Go to "layout" -> New -> Layout Resource File
Add a new resource file "layout_grid_item"
Go back to MyGridViewAdapter.java
public class MyGridViewAdapter extends BaseAdapter {
// (3)
private Context mContext;
private LayoutInflater mLayoutInflator;
// (4)
public MyGridViewAdapter(Context context){
this.mContext = context;
mLayoutInflator = LayoutInflater.from(context);
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
// (1)
static class ViewHolder{
public ImageView imageView;
public TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//(2)
ViewHolder holder = null;
if(convertView==null)
{
// (5)
convertView = mLayoutInflator.inflate(R.layout.layout_grid_item, null);
holder = new ViewHolder();
holder.imageView = convertView.findViewById(R.id.iv_grid);
holder.textView = convertView.findViewById(R.id.tv_title);
convertView.setTag(holder);
}else{
// (6)
holder = (ViewHolder) convertView.getTag();
}
// (7)
return convertView;
}
Remember to accept internet permission in AndroidManifest.xml
Install glide module to load image from internet
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
MyGridViewAdapter.java
package com.example.gridviewexample.gridview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.gridviewexample.R;
public class MyGridViewAdapter extends BaseAdapter {
// (3)
private Context mContext;
private LayoutInflater mLayoutInflator;
// (4)
public MyGridViewAdapter(Context context){
this.mContext = context;
mLayoutInflator = LayoutInflater.from(context);
}
@Override
public int getCount() {
return 12;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
// (1)
static class ViewHolder{
public ImageView imageView;
public TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//(2)
ViewHolder holder = null;
if(convertView==null)
{
// (5)
convertView = mLayoutInflator.inflate(R.layout.layout_grid_item, null);
holder = new ViewHolder();
holder.imageView = convertView.findViewById(R.id.iv_grid);
holder.textView = convertView.findViewById(R.id.tv_title);
convertView.setTag(holder);
}else{
// (6)
holder = (ViewHolder) convertView.getTag();
}
// (8)
holder.textView.setText("MATLAB");
Glide.with(mContext).load("https://upload.wikimedia.org/wikipedia/commons/archive/2/21/20170128174109%21Matlab_Logo.png").into(holder.imageView);
// (7)
return convertView;
}
}
Finally, we have to finish the adapter's parts.
GridViewActivity.java
package com.example.gridviewexample.gridview;
import android.os.Bundle;
import android.widget.GridView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.example.gridviewexample.R;
public class GridViewActivity extends AppCompatActivity {
private GridView mGv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acitivity_gridview);
mGv = findViewById(R.id.gv);
// To-Do: mGv.setAdapter
mGv.setAdapter(new MyGridViewAdapter(GridViewActivity.this));
}
}
-------------------------------------------
留言列表