先看看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实现单选效果的使用技巧和注意事项,需要的朋友参考一下 1.实现如图所示的单选效果 由于Android提供的单选按钮radiobutton只能单行或单列显示,且样式并不美观,故可用GridView进行改造,实现单选效果,而要实现这样的效果重点就在GridView的适配器这块了。 首先是GridVie
本文向大家介绍Android中使用GridView和ImageViewSwitcher实现电子相册简单功能实例,包括了Android中使用GridView和ImageViewSwitcher实现电子相册简单功能实例的使用技巧和注意事项,需要的朋友参考一下 我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切
我需要在中选择多个图像,并在中添加共享和删除按钮。 My类别: 但是当我试图打开Gridview时,它给我一个错误。 我的Logcat细节 02-10 21:10:46.965 21658-21658/com。Android示例E/AndroidRuntime﹕ 致命异常:主进程:com。Android例如,PID:21658java。ClassCastException:android。小装置。
本文向大家介绍Android利用Intent实现记事本功能(NotePad),包括了Android利用Intent实现记事本功能(NotePad)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Intent如何实现一个简单的记事本功能的演示过程,供大家参考,具体内容如下 1、运行截图 单击右上角【…】会弹出【添加】菜单项,长按某条记录会弹出快捷菜单【删除】项。 2、主要设计步骤 (1
本文向大家介绍Android GridView简单实例,包括了Android GridView简单实例的使用技巧和注意事项,需要的朋友参考一下 也是今天用到的一个东西,就是简单实现九宫格的Demo 1.就是定义各种layout 和对应的item 我的: itme的 开始准备数据: 设置显示 最后扔一张效果图 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍vue实现单选和多选功能,包括了vue实现单选和多选功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue实现单选和多选功能的具体代码,供大家参考,具体内容如下复制代码 vue实现多选功能 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
关于searchview,我有一个简单的问题--我在我的菜单中创建了searchview项,我有功能gridview,但我不知道如何在onCreateOptionMenu中完成我的代码--它不会识别我的GridAdapter。以下代码 gridAdapter是我的gridview的适配器,但它显示为红色,这是我不明白的。顺便说一句:即使在OnCreateOptionsMenu中添加了这两行,应用程
本文向大家介绍Android利用SurfaceView实现简单计时器,包括了Android利用SurfaceView实现简单计时器的使用技巧和注意事项,需要的朋友参考一下 自学了android有几个月了,跟着网上的节奏,应该早点写些博客来提高自己的水准的。但苦于技术水准始终不自信(也是不过关的结果吧),就一直只是将自己学习过程中的问题和重要的知识点写在自己的笔记文档中。 但,总感觉一个人写下来成就