Android图文列表实现(ListView)
【mie haha的博客】转载请注明出处(万分感谢!):
https://blog.csdn.net/qq_40315080/article/details/96186623
Android中xml和java相结合。
xml用来进行不复杂的布局,java用来描述功能或进行稍复杂的布局(布局可替代xml,只是xml更方便)
举例ListView实现简单图文列表-----------
效果(只看张明李明李明部分):
一个列表的一个单元中显示了1个图片,2段文字,这不能用ListView中的set方法直接设置,需要为它用一个xml文件专门设置一下每个单元都是什么形式。
xml代码:
1.首先是主界面的xml布局代码,包含一个列表ListView:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:background="#ffffff"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/middle"></include>
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
2.接下来规定列表中单元的布局,在res/layout中再建一个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"
tools:context=".MainActivity">
<ImageView
android:id="@+id/image1"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher"
android:layout_margin="5dp"></ImageView>
<LinearLayout
android:id="@+id/linearlayout"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_margin="5dp"
android:layout_marginLeft="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="25sp"
android:textColor="@color/dark"
/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="10sp"
android:textColor="@color/dark"
/>
</LinearLayout>
</LinearLayout>
其中ImageView中的src是图片的位置,要用的图片都要拖入res/mipmap中,引用图片时src为@mipmap/picture’s name
颜色color是在values/colors.xml中设置的,初始时有默认设置的几个颜色,可以继续仿照给出的默认值增添需要的颜色,此处我增加了上面用到的dark。
我的colors.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="dark">#000000</color>
</resources>
接下来在Activity文件中进行设置,让列表ListView的单元格应用我们自己定义的form.xml文件,变成1个图片2段文字的形式:
public class MainActivity extends Activity {
private List<Map<String, Object>> lists;
private SimpleAdapter adapter;
private ListView listView;
private String[] theme = {"张明", "李明", "李明"};
private String[] content = {"600 602 501", "666 620 502", "666 620 503"};
private int imageViews = R.mipmap.ic_launcher; //用到的图片是mipmap中的ic_launcher
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//需要把图片和文字(一个单元中的东西)用Map对应起来,必须这样做,这是下面要用到的适配器的一个参数
lists = new ArrayList<>();
for (int i = 0; i < theme.length; i++) {
Map<String, Object> map = new HashMap<>();
map.put("image", imageViews);
map.put("theme", theme[i]);
map.put("content", content[i]);
lists.add(map);
}
//适配器指定应用自己定义的xml格式
adapter = new SimpleAdapter(MainActivity.this, lists, R.layout.form, new String[]{"image", "theme", "content"}, new int[]{R.id.image1, R.id.text1, R.id.text2});
listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
上面用到的简单适配器SimpleAdapter的参数依次是:应用到的上下文对象(一般为activity);含有Map的一个集合(数据源);
每一个item的布局文件(我们自己新增定义的xml文件);new String[]{}数组,数组的里面的每一项要与第二个参数中的存入map集合的的key值一样,一一对应;
简单图文列表完成。
仍在入门,若有错误,欢迎指出
推荐阅读
-
Android使用ListView实现滚轮的动画效果实例
-
Android 实现ListView的点击变色的实例
-
Android中判断listview是否滑动到顶部和底部的实现方法
-
Android开发之ListView功能扩展,实现高性能的瀑布流布局讲解
-
Android实现弹出列表、单选、多选框
-
Android开发实现ListView和adapter配合显示图片和文字列表功能示例
-
Android基于BaseExpandableListAdapter实现的二级列表仿通话记录功能详解
-
Android开发实现可拖动排序的ListView功能【附源码下载】
-
Android利用RecyclerView实现列表倒计时效果
-
Android使用AlertDialog实现的信息列表单选、多选对话框功能