zoukankan      html  css  js  c++  java
  • ListView常用属性及设置点击事件

    ***1.ListView控件常用属性
    choiceMode:设置ListView的选择行为
    divider:设置列表项的分隔条的颜色
    dividerHeight;设置分隔条高度
    entries:指定一个数组资源,android将根据该资源生成listview,如android:entries="@array/xxx",资源可以到values文件夹中的string.xml中添加
    footerDividersEnabled:如果设置为false将不会在footerView之前设置分隔条
    headerDividersEnabled:如果设置为false将不会在headerView之后设置分隔条

    ***2.常见问题及解决方法
    问题1:listview在拖动的时候背景图片消失变成黑色背景。等到拖动完毕我们自己的背景图片才显示出来。
    解决办法:
    xml中: android:scrollingCache="false" 或者 android:cacheColorHint="#00000000"
    代码中: setScrollingCacheEnabled(false) 或者 setCacheColorHint(0) 或者setCacheColorHint(Color.TRANSPARENT);
    问题2:listview的上边和下边有黑色的阴影。
    解决办法:
    xml中: android:fadingEdge="none"
    代码中:setFadingEdgeLength(0);
    问题3:lsitview的每一项之间需要设置一个图片做为间隔。
    解决办法:
    xml中 :android:divider="@drawable/list_driver
    java中:Drawable dr = this.getResources().getDrawable(R.colo.listviewdividerClour);
    ListView.setDivider(dr);
    问题4:默认会显示选中的item为橙黄底色,有时候我们需要去掉这种效果:
    解决办法:
    xml中:listSelector="@android:color/transparent
    衍生:ListView选中时默认是黄色,很多时候会和我们软件的配色不符合,那么需要修改默认的ListView配色,
    java中:
    Drawable drawable=getResources().getDrawable(R.drawable.touch_feedback);
    ListView.setSelector(drawable);
    xml中:
    listSelector="@android:color/blue
    同理运用到 GridView中

    ***3.设置ListView控件的点击事件:

    public class MainActivity extends Activity {
    	private ArrayAdapter<String> adapter;
    	private ListView lv;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		lv = (ListView) findViewById(R.id.listview);
    		//1.准备数据源(可以直接在这里定义数组,也可在strings.xml中定义数据源,然后在这里获取)
    		final String[] citys = getResources().getStringArray(R.array.citys);
    		//2.将数据源的数据加载到适配器中
    		adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,citys);
    		//3.将适配器中的数据加载到控件中
    		lv.setAdapter(adapter);
    		
    		//为ListView控件的每个Item设置监听事件
    		lv.setOnItemClickListener(new OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view,
    					int position, long id) {
    				/*获取Item中数据的四种方式*/
    				String s1 = citys[position];//从数据源中获取
    				String s2 = adapter.getItem(position);//从适配器中获取
    				String s3 = parent.getItemAtPosition(position).toString();//从parent中获取
    				String s4 = lv.getItemAtPosition(position).toString();//从ListView控件中获取
    				Toast.makeText(MainActivity.this, "s1="+s1+",s2="+s2+",s3="+s3+",s4="+s4, Toast.LENGTH_SHORT).show();	
    			}
    			
    		});
    		//这是为ListView控件中的Item设置长按事件
    		lv.setOnItemLongClickListener(new OnItemLongClickListener() {
    			//这是长按时的回调函数
    			//若ListView既绑定监听事件也绑定了长按事件,此时返回值为false时表示对事件不处理(对点击和长按事件都会触发),若为true表示对事件处理(只对长按事件触发)
    			@Override
    			public boolean onItemLongClick(AdapterView<?> parent, View view,
    					int position, long id) {
    				return false;
    			}	
    		});
    	}
    }
  • 相关阅读:
    (转)用Ajax技术让IE Web Control Tree View实现大数据量读取
    您试图从目录中执行CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序
    oracle数据库中ORA28000: the account is locked问题
    C#动态生成html页面
    oracle 用户权限解释
    HCPC2013校赛训练赛 2
    ZOJ2770 Burn the Linked Camp 差分约束
    POJ2570 Fiber Network 状态压缩+floyd
    ZOJ3088 Easter Holidays 最短路
    POJ1364 King 差分约束
  • 原文地址:https://www.cnblogs.com/SanguineBoy/p/9748316.html
Copyright © 2011-2022 走看看