先看看GridView实现单选效果
如果是你需要的,你可以继续往下看了
实现起来比较简单,直接上代码
主Activity的布局,一个Button用来跳转到筛选Activity一个TextView用来显示筛选后的到的结果
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.duanlian.gridviewsingleselectordomo.MainActivity"> <Button android:layout_width="match_parent" android:layout_height="50dp" android:onClick="buttonClick" android:text="去筛选"/> <TextView android:id="@+id/tv_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30dp" android:textColor="@color/colorAccent" android:layout_centerInParent="true" android:text="筛选结果"/> </RelativeLayout>
MainActivity你的代码逻辑,注释已经加上
package com.duanlian.gridviewsingleselectordomo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.tv_result);
}
/**
* button的点击监听
* @param view
*/
public void buttonClick(View view) {
//跳转到筛选的activity
Intent intent = new Intent(MainActivity.this, SingleSelectorActivity.class);
//通过带返回值的跳转来的到下一个页面带过来的值
startActivityForResult(intent,888);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 888 && resultCode == 999) {
//拿到上一个页面finish后带过来的值
String pos = data.getStringExtra("pos");
mTextView.setText(pos);
}
}
}
然后就是筛选Activity,布局就一个GridView用来显示待选项,
一个Button用来点击返回主Activity并且把选择的值带过去
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_single_selector" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.duanlian.gridviewsingleselectordomo.SingleSelectorActivity"> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="50dp" android:onClick="buttonFinish" android:text="选择完成"/> <GridView android:id="@+id/gridView" android:layout_below="@+id/button" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="80dp" android:horizontalSpacing="5dp" android:verticalSpacing="10dp" android:numColumns="auto_fit"/> </RelativeLayout>
然后就是筛选逻辑
package com.duanlian.gridviewsingleselectordomo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import java.util.ArrayList;
import java.util.List;
public class SingleSelectorActivity extends AppCompatActivity {
private GridView mGridView;
private List<String> mList;
private GridViewAdapter mAdapter;
int selectorPosition = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_selector);
initView();
}
private void initView() {
mGridView = (GridView) findViewById(R.id.gridView);
//添加数据
mList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
mList.add("第 " + i + " 个");
}
mAdapter = new GridViewAdapter(this, mList);
mGridView.setAdapter(mAdapter);
//gridView的点击事件
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//把点击的position传递到adapter里面去
mAdapter.changeState(position);
selectorPosition = position;
}
});
}
/**
* button的点击监听
*
* @param view
*/
public void buttonFinish(View view) {
Intent intent = new Intent();
intent.putExtra("pos", "第 " + selectorPosition + " 个");
setResult(999, intent);
finish();
}
}
主要的状态改变还是在Adapter里面
package com.duanlian.gridviewsingleselectordomo;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.List;
/**
* gridView的adapter
*/
public class GridViewAdapter extends BaseAdapter {
private Context mContext;
private List<String> mList;
private int selectorPosition;
public GridViewAdapter(Context context, List<String> mList) {
this.mContext = context;
this.mList = mList;
}
@Override
public int getCount() {
return mList != null ? mList.size() : 0;
}
@Override
public Object getItem(int position) {
return mList != null ? mList.get(position) : null;
}
@Override
public long getItemId(int position) {
return mList != null ? position : 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = View.inflate(mContext, R.layout.item_gridview, null);
RelativeLayout mRelativeLayout = (RelativeLayout) convertView.findViewById(R.id.ll);
TextView textView = (TextView) convertView.findViewById(R.id.tv);
textView.setText(mList.get(position));
//如果当前的position等于传过来点击的position,就去改变他的状态
if (selectorPosition == position) {
mRelativeLayout.setBackgroundResource(R.drawable.grid_shap_two);
textView.setTextColor(Color.parseColor("#FF4081"));
} else {
//其他的恢复原来的状态
mRelativeLayout.setBackgroundResource(R.drawable.grid_shap_one);
textView.setTextColor(Color.parseColor("#3F51B5"));
}
return convertView;
}
public void changeState(int pos) {
selectorPosition = pos;
notifyDataSetChanged();
}
}
还有item布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/ll" android:layout_width="100dp" android:layout_height="32dp" android:layout_centerInParent="true" android:layout_margin="5dp" android:background="@drawable/grid_shap_one" > <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:ellipsize="none" android:gravity="center" android:singleLine="true" android:text="英超" android:maxLength="7" android:textColor="@color/colorPrimary" android:textSize="13sp"/> </RelativeLayout> </RelativeLayout>
如果你想点击跳转到筛选Activity且待筛选的按钮中,显示你之前选择后的那个按钮状态是选中状态,其实也很简单,只要你把你选中后的position缓存下来,点进去到筛选Activity,实例化Adapter后调用 mAdapter.changeState(position);把你需要改变状态的按钮的position传递过去就行了
其他的小细节请下载demo
点击下载demo
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# GridView
# 单选
# Android利用GridView实现单选效果
# Android实现取消GridView中Item选中时默认的背景色
# android GridView多选效果的实例代码
# Android网格布局GridView实现漂亮的多选效果
# 跳转到
# 其他的
# 把你
# 是在
# 看了
# 你可以
# 你想
# 也很
# 只要你
# 就去
# 点击下载
# 跳转
# 往下
# 请下载
# 大家多多
# 返回值
# 就行了
# textSize
# support
相关文章:
seo网站制作优化,网站SEO优化步骤有哪些?
如何通过主机屋免费建站教程十分钟搭建网站?
如何在云主机上快速搭建网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何有效防御Web建站篡改攻击?
三星网站视频制作教程下载,三星w23网页如何全屏?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
建站之星×万网:智能建站系统+自助建站平台一键生成
建站VPS推荐:2025年高性能服务器配置指南
微课制作网站有哪些,微课网怎么进?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何快速配置高效服务器建站软件?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
建站之星如何开启自定义404页面避免用户流失?
SQL查询语句优化的实用方法总结
如何选择适配移动端的WAP自助建站平台?
建站主机功能解析:服务器选择与快速搭建指南
简历在线制作网站免费版,如何创建个人简历?
建站主机如何选?高性价比方案全解析
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
,sp开头的版面叫什么?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何快速建站并高效导出源代码?
,怎么用自己头像做动态表情包?
香港服务器如何优化才能显著提升网站加载速度?
建站之星安装路径如何正确选择及配置?
建站之星安装后如何自定义网站颜色与字体?
如何在阿里云高效完成企业建站全流程?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
建设网站制作价格,怎样建立自己的公司网站?
如何通过免费商城建站系统源码自定义网站主题与功能?
Android自定义控件实现温度旋转按钮效果
已有域名和空间如何搭建网站?
常州自助建站费用包含哪些项目?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
如何在万网ECS上快速搭建专属网站?
制作旅游网站html,怎样注册旅游网站?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
建站之星云端配置指南:模板选择与SEO优化一键生成
Thinkphp 中 distinct 的用法解析
网站好制作吗知乎,网站开发好学吗?有什么技巧?
如何快速重置建站主机并恢复默认配置?
相册网站制作软件,图片上的网址怎么复制?
如何通过远程VPS快速搭建个人网站?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何彻底卸载建站之星软件?
成都网站制作报价公司,成都工业用气开户费用?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
*请认真填写需求信息,我们会在24小时内与您取得联系。