安卓,ListView,打气筒的初次使用

先来介绍一下ListView这么个东西,适合用在一排数据的展示中,

例如,这样的一个就是使用了List View这么一个控件实现功能

安卓,ListView,打气筒的初次使用

 

实现的思路主要是这样

在布局里面加一个ListView像是这样,以下代码是常用的他的一些方法

    <ListView
        android:id="@+id/lv"  //加一个id号
        android:layout_width="match_parent"    //设置宽度高度
        android:fastScrollEnabled="true"      //实现一个下滑块,方便一下到底
        android:layout_height="match_parent"></ListView>

然后在MainActivity中找到这个控件,然后为他增加一个适配器。

适配器我们最先介绍一个叫做BaseAdapter的适配器,这个比较洋气

比较好用,

 实现的效果是上面的那一个图

 

package com.example.xialm.list_test2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView ll = (ListView)findViewById(R.id.lv);
//设置适配器
        ll.setAdapter(new myad());
    }

//开始编写适配器
    public class myad extends BaseAdapter{

//下面是Base Adapter的四个构造方法, @Override
public int getCount() { //实现几个条目的显示 return 100000; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tv; if(convertView == null){ //创建新的缓存对象 tv = new TextView(MainActivity.this); }else{ //复用新的缓存对象 tv = (TextView)convertView; } int s = position+1; tv.setText("你好,你是第"+s+"个世界"); return tv; } } }

既可实现,

 

那么我们可以看到这个有点low,向我们手机上那种洋气一点的布局是怎么做的呢,最起码得实现一个这样的布局把

如下:

安卓,ListView,打气筒的初次使用

 

 这个好像还可以接受一波,那么我们现在的数据是我们自己造的,我们在后面会提到

如何从其他的地方拿到我们需要的东西然后再放到我们的LIst View上面来显示,

所以先来搞上面的那个界面,

有第一个案例来说,我们可以发现要做出这样的案例,只需要改动我们Adapter里面的一个

叫做getView 这个方法就可以了,

也就是我们要改动的是这一块

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView tv;

            if(convertView == null){
                //创建新的缓存对象
                tv  = new TextView(MainActivity.this);
            }else{
                //复用新的缓存对象
                tv = (TextView)convertView;
            }
            int s = position+1;
            tv.setText("你好,你是第"+s+"个世界");

            return tv;
        }

整体的框架我们不需要改动,尤其是if  和  else这一段逻辑

解释一下这一段逻辑是用来实现将我们的程序内存最大的优化

是我们的app的运行更加流畅,使资源不会因为还没有释放之前,

就内存溢出了

那么我们改动哪一块呢,

应该是textview那一快

看上去这样只能显示一行的内容,我们现在想要在左边显示一个图片,

在右边显示两个文本框框,这个明显涉及到了布局

我们再回首看我们的代码的时候发现,我们代码中写的我们只能显示view

当然TextView是View的一种啦

那么顺理成章的,现在可以将目光和思路引导到我们实现 将布局文件转换为 view的伟大道路上

Android底层的工程师为我们创建了这么一个api正好是可以进行实现我们的功能

江湖人称,打气筒,

总结一下,一切思路和上面第一个案例一样,

我们只需要改变Adapter中第四个构造方法中的view

想实现那个就必须要将layout文件转换为view,我们引进了一个技术叫做打气筒

下面是代码

xml

 

安卓,ListView,打气筒的初次使用

上一篇:在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射


下一篇:Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划