先序
尽量一天一更,看看自己能水到啥地步
第三章-续
3.4 系统控件不够用?创建自定义控件
3.4.1 引入布局
在layout创建xml文件,然后在其他xml中使用include引入
<include layout="@layout/title"></include>
3.4.2 自定义控件
当某些控件,比如标题栏的返回键,基本每个界面都要,使用非常广泛,这样就比较适合干脆自定义一个返回按钮控件。
自定义一个布局类,继承,然后重写带参数的构造函数,在布局中引入自定义布局类,就可以对自定义组件进行加载,借助LayoutInFlater,
3.5 ListView
最常用的组件。
简单用法:
public class ListViewActivity extends AppCompatActivity {
private String[] data = {"aaa", "bbb", "ccc", "ddd", "eee", "fff"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
ListViewActivity.this,android.R.layout.simple_list_item_1,data);
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
}
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_view"
>
</ListView>
难一点的用法,定制版
我感觉我现在,在经历一个时期,我真是草了,我现在要进行逐渐对比,我ctm,没错,不要怀疑,我就是一个sb
先看一下之前的学习吧
引入布局 | 自定义插件 | 普通引入ListView | 自定义引入ListView |
---|---|---|---|
简单来说就像是前端的组件化开发,把UI设计的给组件化了,然后主界面引用 | 相同的UI是可以相同的,但是里面有些功能键可能是不同的,这个意思就是有些UI所对应的功能是不一样的,但是有些按钮是相同的其实意思就是如果某个组件化UI连功能都相似的话,干脆是可以定义成一个插件的 | 普通引入ListView,使用官方定义好的 | 自定义定义List |
写好一个xml,然后在其他xml文件中引入,<include layout="@layout/xml文件名" /> | 完成方法:自定义控件类继承布局,然后重写构造函数, LayoutInflater.from(context).inflate(R.layout.xml,this); |
wcnm,昨天写的忘保存了
普通引入ListView | 自定义引入ListView |
---|---|
活动中建立一个ListView,然后修改活动的类,ListView显示数据分两步,第一步配置适配器,因为是普通所以使用ArrayAdapter,第二步是输入适配器 | 第一步建立相应类,第二步建立子项布局xml文件,第三项继承适配器写新适配器,第四项在响应页面应用 |
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
ListViewActivity.this,android.R.layout.simple_list_item_1,data);
//上下文,子项布局,数据 之前理解了很久,上下文意思就是当前你界面的位置,你想在哪个界面显示,不过一般都是本界面吧。
// 子项布局,比如普通的这个来说,子项支持为String类型,等你要使用自定义布局的时候,就不能用这个item1来支持了,需要自己写支持项,比如经典的水果,你就需要写一个能够支持String和image的布局
ListView listView = findViewById(R.id.list_view);
listView.setAdapter(adapter);
public class Fruit {
private String name;
private int id;
public Fruit(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
}
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fruit_id"></TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fruit_name"></TextView>
initData();
FruitAdapter fruitAdapter = new FruitAdapter(PrivateAdapter.this,R.layout.fruit_item,fruitList);
ListView listView = findViewById(R.id.private_list_view);
listView.setAdapter(fruitAdapter);
我真是烦透了这个傻逼ListView了,这点马上写写就过
3.5.2 提升ListView运行效率