码迷,mamicode.com
首页 > 其他好文 > 详细

3.17学习总结.listview用法总结

时间:2021-03-18 14:30:14      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ppc   match   private   protect   xtend   weight   style   数据   name   

  今天复习了listview控件的用法。

1.activity_main.xml 中的代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingTop="10dp"
    android:paddingLeft="10dp"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/lv_1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"/>

</LinearLayout>

2. 接下来修改 MainActivity 中的代码,如下:

public class MainActivity extends AppCompatActivity {
    private ListView mlist;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mlist=(ListView)findViewById(R.id.lv_1);
        mlist.setAdapter(new adapter(MainActivity.this));
    }
}

3.adapter代码

(我的理解adapter相当于一个中转站,在被调用的时候将接收到的东西依次送到调用方)

public class adapter extends BaseAdapter {

    private Context mContext;
    private LayoutInflater mLayoutInflater;
    public adapter(Context context){
        this.mContext=context;
        mLayoutInflater=LayoutInflater.from(context);
    }
    @Override
    public int getCount() {
        return 10;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

     class ViewHolder{
        public TextView tv_1;
        public TextView tv_2;
        public TextView tv_3;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if (convertView==null){
            convertView=mLayoutInflater.inflate(R.layout.list_item,null);
            holder=new ViewHolder();
            holder.tv_1=convertView.findViewById(R.id.tv_name);
            holder.tv_2=convertView.findViewById(R.id.tv_temp);
            holder.tv_3=convertView.findViewById(R.id.tv_place);

            convertView.setTag(holder);
        }else{
            holder= (ViewHolder) convertView.getTag();
        }
        //给控件赋值
        holder.tv_1.setText("姓名"+"小明");
        holder.tv_2.setText("体温"+"36.2");
        holder.tv_3.setText("地址"+"中国");

        return convertView;
    }
}

数组中的数据实是无法直接传递给 ListView 的,我们还需要借助适配器来完成。 Android中提供了很多适配器的实现类,此处用 ArrayAdapter适配器。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入。ArrayAdapter 有多个构造函数的重载,根据实际情况来选择合适的一种。

这里我们提供的数据都是字符串,因此将ArrayAdapter 的泛型指定为 String,然后在 ArrayAdapter 的构造函数中依次 传入 上下文、ListView 子项布局的 id,以及要适配的数据。注意:我们使用了 android.R.layout.list_item作为 ListView 子项布局的 id,这是一个Android 内置的布局文件,里面只有一个 TextView ,可用于简单地显示一段文本。这样适配器就构建好了。

最后调用 ListView 的 setAdapter() 方法,将构建好的适配器对象传递进去,这样ListView 和数据之间的关联就建立好了。
list_item代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="15dp"
        android:layout_weight="1"
        android:text="姓名:" />

    <TextView
        android:id="@+id/tv_temp"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="体温" />
    <TextView
        android:id="@+id/tv_place"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="所在地" />
</LinearLayout>

 

3.17学习总结.listview用法总结

标签:ppc   match   private   protect   xtend   weight   style   数据   name   

原文地址:https://www.cnblogs.com/1305536110-dym/p/14552790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!