欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android图文列表实现(ListView)

程序员文章站 2022-07-14 12:49:50
...

【mie haha的博客】转载请注明出处(万分感谢!):
https://blog.csdn.net/qq_40315080/article/details/96186623

Android中xml和java相结合。
xml用来进行不复杂的布局,java用来描述功能或进行稍复杂的布局(布局可替代xml,只是xml更方便)

举例ListView实现简单图文列表-----------

效果(只看张明李明李明部分):
Android图文列表实现(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值一样,一一对应;

简单图文列表完成。

仍在入门,若有错误,欢迎指出