1. 一个界面xml布局文件应仅inflate一次即可

一个界面xml布局文件仅仅inflate一次即可,然后将这个实例保存起来,如果inflate两次,在发现问题根源之前,可能会出现一些极为怪异的问题。比如:

LayoutInflater inflater = getLayoutInflater();
viewList.add(inflater.inflate(R.layout.default_view, null));
viewList.add(inflater.inflate(R.layout.musiclist_view, null));
viewList.add(inflater.inflate(R.layout.networkmusic_view, null));

在这里实例化了3个布局文件,作为ViewPager切换时的布局。如果想获取这些布局的实例,应直接用保存在viewList里面的实例,而不是再次inflate一个出来,否则,如果你在第二次inflate出来的布局文件上寻找某一个控件,然后设置控件的值,然后更新界面,你会发现界面根本就没反应,因为那个控件根本就不是属于第一个布局文件的实例的。

View view = viewList.get(1); 
//View view = getLayoutInflater().inflate(R.layout.musiclist_view, null);
myList  = (ExpandableListView)view.findViewById(R.id.myList);
mvp_list = musicService.getMusicList();
myListAdapter = new MyListItemAdapter(mvp_list);
myList.setAdapter(myListAdapter);


这样才是正确的做法。注释的是错误的做法。

完毕。

好的,我可以为您提供一个简单的通讯录界面布局代码示例。请按照以下步骤操作: 1. 打开 Android Studio,创建一个新的项目,选择 Empty Activity 模板。 2. 在 res/layout 目录下创建一个名为 activity_contact.xml布局文件,用于定义通讯录界面布局。 3. 将以下代码复制到 activity_contact.xml 文件中: ```xml <?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="match_parent" android:orientation="vertical"> <!-- 顶部搜索栏 --> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp"> <EditText android:id="@+id/et_search" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="搜索联系人" android:padding="8dp" android:textSize="16sp" /> <Button android:id="@+id/btn_search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="搜索" /> </RelativeLayout> <!-- 中间联系人列表 --> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!-- 底部功能栏 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical" android:padding="8dp"> <Button android:id="@+id/btn_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加联系人" /> <Button android:id="@+id/btn_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="群组" /> <Button android:id="@+id/btn_setting" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="设置" /> </LinearLayout> </LinearLayout> ``` 4. 在 MainActivity.java 文件中,添加以下代码来设置 ListView 的适配器,并向其中添加测试数据: ```java public class MainActivity extends AppCompatActivity { private ListView mListView; private ContactAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); // 初始化 ListView mListView = (ListView) findViewById(R.id.list_view); // 添加测试数据 List<Contact> contacts = new ArrayList<>(); contacts.add(new Contact("张三", "13888888888")); contacts.add(new Contact("李四", "13999999999")); contacts.add(new Contact("王五", "13666666666")); // 设置 ListView 的适配器 mAdapter = new ContactAdapter(this, contacts); mListView.setAdapter(mAdapter); } /** * 联系人数据模型类 */ private static class Contact { String name; String phone; public Contact(String name, String phone) { this.name = name; this.phone = phone; } } /** * 联系人列表适配器类 */ private static class ContactAdapter extends ArrayAdapter<Contact> { private Context mContext; public ContactAdapter(Context context, List<Contact> contacts) { super(context, 0, contacts); mContext = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_contact, parent, false); } // 获取当前位置的联系人数据 Contact contact = getItem(position); // 显示联系人的姓名和电话号码 TextView tvName = (TextView) convertView.findViewById(R.id.tv_name); TextView tvPhone = (TextView) convertView.findViewById(R.id.tv_phone); tvName.setText(contact.name); tvPhone.setText(contact.phone); return convertView; } } } ``` 5. 在 res/layout 目录下创建一个名为 item_contact.xml布局文件,用于定义 ListView 的列表项布局。 6. 将以下代码复制到 item_contact.xml 文件中: ```xml <?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="vertical" android:padding="16dp"> <TextView android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_phone" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" android:textColor="@android:color/darker_gray" /> </LinearLayout> ``` 7. 运行应用程序,您将看到一个简单的通讯录界面,其中包含搜索栏、联系人列表和功能按钮栏,如下图所示: ![通讯录界面](https://i.imgur.com/a4XgQn3.png) 这只是一个简单的示例代码,您可以根据自己的需要进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值