通用代码库之listview和GridView
16lz
2021-01-24
1、记录Android心得及点滴
2、android ListView详解
3、RGB颜色查询对照表
4、为了做到优化ListView或GridView,适配器写法,代码记录。
public class RecordListAdapter extends BaseAdapter {public Context context;public ArrayList<PlayRecordDate> list;LayoutInflater inflater;public RecordListAdapter(Context context, ArrayList<PlayRecordDate> list,FinalBitmap fb) {this.context = context;this.list = list;inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn list.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public class ViewHolder {private ImageView playrecord_img;private TextView playrecord_name;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = inflater.inflate(R.layout.gridview_playrecord_item_layout, null);holder.playrecord_img = (ImageView) convertView.findViewById(R.id.play_record_img);holder.playrecord_name = (TextView) convertView.findViewById(R.id.play_record_name);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.playrecord_img.setBackgroundResource(R.drawable.bgselector);holder.playrecord_name.setText(list.get(position).getVideoName());return convertView;}}
5.使用GridView时,通用代码记录
<GridView android:id="@+id/grid" android:layout_width="fill_parent" android:layout_height="fill_parent"android:cacheColorHint="#00000000"android:listSelector="#00000000" android:verticalSpacing="35px" <!-- grid元素之间的竖直间隔 如果想改变列数,可以改变这个值来达到要求 --> android:horizontalSpacing="5px" <!--grid元素之间的水平间隔 --> android:numColumns="auto_fit" <!--表示有多少列,如果设置为auto_fit,将根据columnWidth和Spacing来自动计算 --> android:columnWidth="100px" <!-- 一般建议采用有像素密度无关的dip或者dp来表示--> android:stretchMode="SpacingWidth" <!--如何填满空余的位置,模拟器采用WVGA800*480,每排4列,有4*100+5*3=415, 还余65px的空间,如果是columnWidth,则这剩余的65将分摊给4列,每列增加16/17px。 如果采用SpacingWidth,则分摊给3个间隔空隙 --> android:gravity="center" />
常用GridView每项的布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="220dp" android:layout_height="wrap_content" > <ImageView android:id="@+id/play_record_img" android:layout_width="220dp" android:layout_height="300dp" android:layout_centerHorizontal="true" android:scaleType="fitXY"/> <TextView//当字数比较多的时候,该TextView会滚动显示文字 解决TextView不用获取焦点也能实现跑马灯 android:id="@+id/play_record_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/play_record_img" android:layout_centerHorizontal="true" android:ellipsize="marquee" android:lines="1" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:textColor="#FFFFFF" android:textSize="26dip" /></RelativeLayout>
如果只在图片上做选中状态时,可以写一个选择器selector
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:drawable="@drawable/select"></item><item android:state_selected="true" android:drawable="@drawable/select"></item></selector>
再把选择器加入到图片背景上,这样就会做到焦点在哪里,该ImageView就会出现选择样式
img.setBackgroundResource(R.drawable.bgselector);
1、提出问题:我想在同一个界面中,使用两个GridView,两个GridView一起上下滚动;
如果直接将两个GridView添加到同一个界面上,它们是各自滚动的。
因此,我考虑使用SrollView,将它们包装一下!
但这样做会提示如下信息:
The vertically scrolling ScrollView should not contain another vertically scrolling widget (GridView)
并且GridView的界面也显示不全,只显示了一部分????
解决问题:显示上面错误信息是因为ScrollView中只能包含一个子空间。要想让GridView全部显示数据,并不出现GridView滚动情况,需要重写GridView,具体请参考在SrollView中嵌套GridView或ListView
2、提出问题:根据上面的情况,点击事件触发不了该怎么解决??
解决问题:如使用gridview.setOnItemClickListener()作为点击事件的监听,需要把item中的元素全部设为android:focusable="false",android:clickable="false",意思是不处理焦点事件,不处理点击事件
这样焦点事件和点击事件就由GridView本身来处理,即gridview.setOnItemClickListener()来处理。
另一种方法就是在适配器中给其中一个元素添加img.setOnClickListener()监听,也能处理GridView的点击事件。
3、提出问题:ScrollView中嵌套GridView(已重写),ScrollView滚动条不在最顶部
解决问题;请参考http://www.eoeandroid.com/thread-301885-1-1.html
更多相关文章
- 【工作记录】android手势事件操作记录
- 转 20个Android很有用的代码片段
- Android基础考试知识点清单
- Android(安卓)Studio 4.1 更新内容
- Android:解决ViewPager和(RecyclerView、HorizontalScrollView)内部
- Android事件机制(二)
- Android广播
- 使用getevent监听Android输入设备文件
- 浅谈Android五大布局(一)——LinearLayout、FrameLayout和Absoult