java listview控件_ListView普通列表控件的使用
Android中的列表空間非常靈活,可以自定義每一個(gè)列表項(xiàng),實(shí)際上每一個(gè)列表項(xiàng)就是一個(gè)View,在Android定義了3個(gè)列表控件:ListView、ExpandableListView和Spinner,其中Spinner就是在Windows中常見(jiàn)的下拉列表框。
ListView控件用于列表的形式顯示數(shù)據(jù),ListView控件采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行分離。也就是說(shuō),ListView控件在裝載數(shù)據(jù)時(shí)并不是直接使用ListView.add或者類似的方法添加數(shù)據(jù),而是需要指定一個(gè)Adapter對(duì)象。該對(duì)象相當(dāng)于MVC模式中的C(控制器,Controller)。ListView提供數(shù)據(jù)的List或數(shù)組相當(dāng)于MVC模式中的M(模型,Model)在ListView控件中通過(guò)Adapter對(duì)象獲得需要顯示的數(shù)據(jù),在創(chuàng)建Adapter對(duì)象時(shí)需要指定要顯示的數(shù)據(jù)(List或數(shù)組對(duì)象),因此,要顯示的數(shù)據(jù)與ListView之間通過(guò)Adapter對(duì)象進(jìn)行連接,同事又互相獨(dú)立,也就是說(shuō),ListView只知道顯示的數(shù)據(jù)來(lái)自Adapter,并不知道這些數(shù)據(jù)來(lái)自List還是數(shù)組。
MVC好處,MVC把應(yīng)用程序的邏輯與界面是完全分開(kāi)的,最大的好處是:界面設(shè)計(jì)人員可以直接參與到界面的開(kāi)發(fā),程序員就可以把精力放在邏輯層上。而不是像以前那樣,設(shè)計(jì)人員把所有的材料交給開(kāi)發(fā)人員,由開(kāi)發(fā)人員來(lái)實(shí)現(xiàn)界面。在Eclipse工具中開(kāi)發(fā)Android采用了更加簡(jiǎn)單的方法,設(shè)計(jì)人員在Androidraw中設(shè)計(jì)界面,以xml方式保存,在Eclipse中直接打開(kāi)就可以看到設(shè)計(jì)人員的設(shè)計(jì)界面,邏輯處理的代碼放在src文件夾下,讓程序員更專注與業(yè)務(wù)。
1.視圖層(View):一般采用XML文件進(jìn)行描述,使用的時(shí)候可以非常方便的引入。
同時(shí)方便于后期的界面的修改。邏輯中與界面對(duì)應(yīng)的id不變化則代碼不用修改,大大增強(qiáng)了代碼的可維護(hù)性。
2.控制層(controller):Android的控制層的重任通常落在眾多的Activity的肩上,這句話也就暗含了不要在Activity中寫代碼,要通過(guò)Activity交割Model業(yè)務(wù)邏輯層處理,這樣做的另外一個(gè)原因是Android中的Activity的響應(yīng)時(shí)間是5s,如果耗時(shí)的操作放在這里,程序很容易被回收掉。
3.模型層(Model):對(duì)數(shù)據(jù)庫(kù)的操作、對(duì)網(wǎng)絡(luò)等的操作都應(yīng)該在Model里面處理,當(dāng)然對(duì)業(yè)務(wù)計(jì)算等操作也是必須放在該層的。就是應(yīng)用程序中的二進(jìn)制的數(shù)據(jù)。
一、建立工程,如圖
二、activity_main.xml中代碼
>
android:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="fill_parent"
>
View Code
三、MyDataSource.java中代碼
packagecom.study.listview;importjava.util.ArrayList;importjava.util.List;public classMyDataSource {publicMyDataSource(){
}public static ListgetDataSource(){
List list = new ArrayList();
list.add("北京");
list.add("上海");
list.add("廣州");
list.add("貴州");
list.add("海南");
list.add("重慶");
list.add("湖南");returnlist;
}
}
View Code
四、MainActivity.java中代碼
packagecom.study.listview;importjava.util.List;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.ListView;importandroid.widget.Toast;//ListView普通列表空間的使用
public class MainActivity extendsActivity {privateListView listView;private ArrayAdapteradapter;private List data = null; //表示數(shù)據(jù)源
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data=MyDataSource.getDataSource();
listView= (ListView)this.findViewById(R.id.listview);//adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1,data);
adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_multiple_choice,data);//1 adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_single_choice,data);//1 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setChoiceMode(listView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);
listView.setOnItemLongClickListener(newAdapterView.OnItemLongClickListener() {
@Overridepublic boolean onItemLongClick(AdapterView>arg0, View arg1,int arg2, longarg3) {
Toast.makeText(MainActivity.this, "arg2=" + arg2 +",arg3=" + arg3, 1).show();return false;
}
});
}
@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);return true;
}
}
View Code
五、效果圖
總結(jié)
以上是生活随笔為你收集整理的java listview控件_ListView普通列表控件的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 知识图谱入门视频(四)
- 下一篇: 运行试错合集