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; } }); } }
ListView常用屬性及設置點擊事件