android gridview控件的使用
- 行业动态
- 2024-01-25
- 1
Android 控件GridView简介
GridView是Android开发中非常常用的一个控件,它是一个二维网格视图,可以用来展示列表数据,GridView的使用非常简单,只需要设置一些基本属性,如适配器、布局管理器等,就可以轻松实现数据的展示,本文将通过一个简单的案例,详细讲解如何使用GridView控件。
创建一个简单的GridView示例
1、在项目的res/layout目录下创建一个名为activity_main.xml的布局文件,用于放置GridView控件,在这个布局文件中,我们只需要添加一个GridView控件,并设置其基本属性。
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="wrap_content" android:numColumns="3" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
2、接下来,在项目的src/main/java目录下创建一个名为MainActivity.java的Java类文件,用于处理与GridView相关的逻辑,在这个类文件中,我们需要完成以下几个步骤:
(1)初始化一个简单的数据列表;
(2)创建一个适配器,用于将数据列表绑定到GridView上;
(3)在主线程中设置适配器;
(4)为GridView添加点击事件监听器,实现点击单元格时的操作。
实现GridView的数据绑定和点击事件监听
1、在MainActivity.java中,首先初始化一个简单的数据列表:
public class MainActivity extends AppCompatActivity { private String[] data = {"苹果", "香蕉", "橙子", "梨子", "葡萄", "草莓", "西瓜", "柠檬", "芒果", "菠萝", "火龙果"};
2、创建一个适配器类MyAdapter,继承自BaseAdapter,用于将数据列表绑定到GridView上:
public class MyAdapter extends BaseAdapter { private Context context; private String[] data; private int[] imageIds; public MyAdapter(Context context, String[] data) { this.context = context; this.data = data; } @Override public int getCount() { return data.length; } @Override public Object getItem(int position) { return data[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = View.inflate(context, R.layout.grid_item, null); viewHolder = new ViewHolder(); viewHolder.textView = convertView.findViewById(R.id.text); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.textView.setText(data[position]); return convertView; } }
3、在MainActivity.java的onCreate方法中,创建一个适配器实例,并在主线程中设置适配器:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridView gridView = findViewById(R.id.gridView); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); Handler handler = new Handler(Looper.getMainLooper()); // 注意这里需要使用主线程处理UI操作 Runnable runnable = new Runnable() { @Override public void run() { gridView.setAdapter(adapter); // 在主线程中设置适配器,避免出现ANR问题(Android无响应) } }; handler.post(runnable); // 将任务提交给主线程处理,确保UI更新在主线程中执行完毕,注意这里的handler是针对主线程的,所以不需要担心线程安全问题,如果没有Handler,也可以使用其他方式实现线程切换,比如使用AsyncTask,但是需要注意的是,AsyncTask已经被弃用,现在推荐使用Kotlin协程或者RxJava等异步框架,还需要注意的是,如果在子线程中直接修改UI元素,可能会导致ANR问题,在子线程中对UI元素进行修改时,需要先将修改结果回调到主线程中执行,在本例中,我们使用了Handler来实现线程切换。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/355694.html