您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
31_arrayadapter的原理和使用
发布时间:2021-02-20 14:22:11编辑:雪饮阅读()
继昨天用简单数据适配器去渲染listview的item.xml,还有一个比简单数据适配器更简单的是数组数据适配器ArrayAdapter,那么实现如MainActivity.java:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.List;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private List<Person> persons;
private LayoutInflater inflater; // 打气筒 ,充气泵
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// inflater 是系统的一个服务 初始化服务(布局填充服务)
inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
// 第一步得到 组件的id的引用
mListView = (ListView) this.findViewById(R.id.lv_all_person);
PersonDao dao = new PersonDao(this);
persons = dao.findAll();
//用数组数据适配器实现数据渲染视图
String [] personarr = new String[persons.size()];
for(int i=0;i<persons.size();i++){
personarr[i]= persons.get(i).getName();
}
mListView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.item, R.id.tv_name, personarr));
//实现listview中的条目的点击事件
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Person object = (Person) parent.getItemAtPosition(position);
String name = object.getName();
Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show();
}
});
}
}
可见其比简单数据适配器更方便的同时也产生了一个新的缺点,这里age并没有被渲染。由于item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" > <TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="xingming"
android:textColor="#ffff66ff"
android:textSize="18sp" /> <TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="age"
android:textColor="#ffff66ff"
android:textSize="18sp" />
</RelativeLayout>
中age有默认值,所以界面上age部分不会是空白,而是显示位默认值age
关键字词:android,arrayadapter