androidinflate详解 androidlistview的用法

多条告白如次剧本只需引入一次
迟疑了几天 , 感触仍旧把这个教程写一下吧 。固然在网上仍旧之一次全国代表大会堆了 , 然而这是我进修的过程我感触我仍旧该记载下来 , 此后也不妨温故而知新 。
ListView在Android稠密控件中占领比拟要害的位置 , 也是口试官景仰发问的控件之一 , 更加是对于它的本能优化 。这一块我想着把它留到结果再说 , 咱们先来谈谈ListView的大略运用 , 究竟什么货色都是由浅入深的嘛 。
开始咱们要先创造一个名目 , 翻开Android studio点击File—New—New Project创造一个名为ListViewTest的名目 。接着找到res—layout文献夹下的activity_main.xml , 翻开它而且在内里增添ListView控件如次:
<ListViewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="match_parent"></ListView>此时你即使运转名目你会创造内里什么都没有 , 和刚发端创造的这个名目时没多大辨别 , 由于咱们还没有往内里增添数据而且在View中实行它 。以是咱们回到MainActivity这个类内里经过findViewById()这个本领找到这个控件而且实行 。咱们先设置一个名为data的一维字符串数组 , 用来寄存咱们的假数据 。而后经过兴建一个ArrayAdapter并按照诉求摆设它 , 再Adapte经过setAdapter给ListView , 代码如次:
private String data[] = {"aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd"};//假数据@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listView = (ListView) findViewById(R.id.listview);//在视图中找到ListViewArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);//兴建并摆设ArrayAapeterlistView.setAdapter(adapter); }点击运转名目你就能看到一个大略的ListView:
此刻看到了界面了然而离咱们的预见仍旧有点差异 , 咱们蓄意的是除去能看还能点击相应某些事变 , 所以咱们再为它增添一个监听点击的本领 。代码如次:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {switch (i){case 0:Toast.makeText(MainActivity.this,"你点击了"+i+"按钮",Toast.LENGTH_SHORT).show();break;//当咱们点击某一项就能吐司咱们点了哪一项case 1:Toast.makeText(MainActivity.this,"你点击了"+i+"按钮",Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this,"你点击了"+i+"按钮",Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this,"你点击了"+i+"按钮",Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this,"你点击了"+i+"按钮",Toast.LENGTH_SHORT).show();break;}}});这边我就给了5项Item做了相应 , 固然也不妨让每一项都有相应的 , 有爱好本人不妨去试验 。如许一个特殊大略的ListView就实行了 , 接下来咱们来深刻一点点 。
此刻咱们要定制一个有图片有笔墨有采用框的ListView , 如何做呢?之一个咱们确定要把数据改一下 , 然而咱们确定不大概说把数组data改成二维数据就不妨的 , 由于图片不是字符串的情势啊 。那要包括字符串又能包括图片的数据 *** 有什么呢?这时候Bean类就展示了 , 咱们不妨把那些数据封装到一个Bean类内里啊 , 当咱们须要的功夫就径直拿出来就好 。说做就做而后咱们设置一个myBean类 , 代码如次:
public class myBean {private String text;//用来放笔墨的private int ImageID;//用来放图片的public myBean(String text,int imageID){this.ImageID = imageID;this.text = text;}public String getText() {return text;}public void setText(String text) {this.text = text;}public int getImageID() {return ImageID;}public void setImageID(int imageID) {ImageID = imageID;}}而后咱们就不妨经过初始化连接的New一个一个的数据了 , 然而咱们如何放进ListView内里呢?由于咱们方才用的是体例的ArrayAdapter来适配到ListView的 , 咱们以至连要适配的XML的界面都没 。那咱们先去做个咱们要适配的界面去看看 , 所以:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent" android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/ll_view"android:gravity="center"android:layout_margin="10dp"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:background="@mipmap/ic_launcher"android:id="@+id/headimage"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:layout_marginLeft="20dp"android:layout_weight="1"android:text="你是SB"android:id="@+id/headtext"android:layout_width="0dp"android:layout_height="wrap_content" /><RadioGroupandroid:id="@+id/radioBtn"android:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><RadioButtonandroid:text="打他"android:id="@+id/radio2"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RadioButtonandroid:text="不打"android:id="@+id/radio1"android:layout_width="wrap_content" android:layout_height="wrap_content" /></RadioGroup></LinearLayout></LinearLayout>所以咱们把之前的R.layout.simple_list_item_1这XML换成咱们径直做的 , 运路途序你就会创造步调崩了 。嘿嘿 , 不重要这是平常的由于咱们传入的数据都没用适配到咱们的界面上 。以是咱们就只能本人写过一个适配重来适配咱们本人的数据 。

推荐阅读