ListView and gridview常用属性
刷新:notifyDataSetChanged
1.gridview常用属性
GridView的一些特殊属性:
1.Android:numColumns=”auto_fit” //GridView的列数设置为自动
2.android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度
3.android:stretchMode=”columnWidth"//缩放与列宽大小同步
4.android:verticalSpacing=”10dp” //两行之间的边距
5.android:horizontalSpacing=”10dp” //两列之间的边距
6.android:cacheColorHint="#00000000" //去除拖动时默认的黑色背景
7.android:listSelector="#00000000" //去除选中时的黄色底色
8.android:scrollbars="none" //隐藏GridView的滚动条
9.android:fadeScrollbars="true" //设置为true就可以实现滚动条的自动隐藏和显示
10.android:fastScrollEnabled="true" //GridView出现快速滚动的按钮(至少滚动4页才会显示)
11.android:fadingEdge="none" //GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色)
12.android:fadingEdgeLength="10dip" //定义的衰落(褪去)边缘的长度
13.android:stackFromBottom="true" //设置为true时,你做好的列表就会显示你列表的最下面
14.android:transcriptMode="alwaysScroll" //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内
15.android:drawSelectorOnTop="false" //点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false)
1.简单的ListView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Main"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/list_view" android:background="#ff496b" /> </LinearLayout>
在Activity中编写如下代码
ListView listview = (ListView)findViewById(R.id.list_view); ArrayAdapter<String>adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data); listview.setAdapter(adapter);
效果图
2.自定义的ListView,在audio studio中 添加图片只需要把图片复制到工程中以drawable开头的文件夹里面就可以了
第一步创建Fruit,相当于OC中的model类
public class Fruit { private String name; private int imageId; public Fruit(String name, int imageId) { this.name = name; this.imageId = imageId; } public String getName (){ return name; } public int getImageId (){ return imageId; }
第二步,创建fruit_item,类似于OC中的cell
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/fruit_image" android:layout_gravity="center_horizontal" android:src="@drawable/ic_launcher"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="34px" android:id="@+id/fruit_name" android:text="1234556" android:layout_gravity="center" android:layout_marginLeft="10dp" /> </LinearLayout>
第三部创建FruitAdapter 集成于ArrayAdapter,相当于OC中的setModel
package listView.example.com.listviewdemo; import android.view.ViewGroup; import android.view.*; import android.widget.ArrayAdapter; import android.widget.*; import android.content.*; import java.util.List; /** * Created by mac on 17/5/24. */ public class FruitAdapter extends ArrayAdapter<Fruit>{ private int resourceId; public FruitAdapter(Context context,int textViewResourceId,List<Fruit>objects){ super(context,textViewResourceId,objects); resourceId = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit = getItem(position); View view; ViewHolder viewHolder;
//这里相当于oc中循环引用 if(convertView == null){ view = LayoutInflater.from(getContext()).inflate(resourceId,null); viewHolder = new ViewHolder(); viewHolder.fruitImage = (ImageView)view.findViewById(R.id.fruit_image); viewHolder.fruitName= (TextView)view.findViewById(R.id.fruit_name); view.setTag(viewHolder); }else { view = convertView; viewHolder = (ViewHolder)view.getTag(); } viewHolder.fruitImage.setImageResource(fruit.getImageId()); viewHolder.fruitName.setText(fruit.getName()); return view; } //这里是临时变量 class ViewHolder{ ImageView fruitImage; TextView fruitName; } }
在activity中代码
initFruits(); FruitAdapter sdapter = new FruitAdapter(this, R.layout.fruit_item,fruitList); ListView listView = (ListView)findViewById(R.id.image_list); listView.setAdapter(sdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fruit fruit = fruitList.get(position); Toast.makeText(SimpleListView.this,fruit.getName(),Toast.LENGTH_SHORT).show(); } });
数据源方法
private void initFruits(){ Fruit apple = new Fruit("apple", R.drawable.pingguo); fruitList.add(apple); Fruit apple1 = new Fruit("apple1",R.drawable.ic_launcher); fruitList.add(apple1); Fruit apple2 = new Fruit("apple2", R.drawable.pingguo); fruitList.add(apple2); Fruit apple3 = new Fruit("apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3apple3", R.drawable.pingguo); fruitList.add(apple3); }
最终的运行效果图
ListView常用属性