Android高级控件

251 阅读1分钟

image.png

天行健,君子以自强不息。

ListView(列表控件)

ListViewAndroid中显示数据常用的控件之一,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

image.png 布局界面添加一个ListView的控件,设置它的高度和宽度。还可以设置每条数据分割线的颜色和大小。

属性功能
android:divider设置分割线颜色
android:dividerHeight设置分割线大小

image.png 做好上面这些后,在MainActivity用id找到布局中的ListView,就是加载适配器的过程。

public class MainActivity6 extends AppCompatActivity {

    private ListView listView;
    private ArrayAdapter<String> adapter;//适配器初始化

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main6);

//        数据源
        String array[]={"小米","华为","Vivo","OPPO","联想"};

        listView=findViewById(R.id.listItem);

        /**
         * 加载化适配器
         * 参数1:获取上下文环境
         * 参数2:当前ListView加载每一个列表所对应的布局文件
         * 参数3:数据源
         */
        adapter=new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1,
                array);
        listView.setAdapter(adapter);
//        简单点击事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//                获取到点击的文本
                String txt=listView.getItemAtPosition(i)+"";
                Toast.makeText(MainActivity6.this, "点击了第:"+i+"个;内容为:"+txt, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

效果图:

image.png

接下来还有一种就是图片与文字相结合的列表,这种格式复杂的数据就要用到SimpleAdapter适配器了。

public class MainActivity6 extends AppCompatActivity {

    private ListView listView;
    private ArrayAdapter<String> adapter;//数组适配器;
    private ArrayList<String> list;


    private SimpleAdapter simpleAdapter;//可以将图片和文字结合的适配器
    private List<Map<String,Object>> mapList;//列表集合



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main6);

        listView=findViewById(R.id.listItem);
//        initView();//普通适配器
        initView2();//SimpleAdapter适配器
    }

    private void initView2() {
        mapList=new ArrayList<>();//数组列表
        mapList=getData();//将数据源添加到数组列表中
        /**
         * 参数1:上下文
         * 参数2:数组列表,可以看做是数据源
         * 参数3:对应的键名
         * 参数4:自定义文件控件的id
         */
        simpleAdapter=new SimpleAdapter(this,
                mapList,
                R.layout.list_item,new String[]{"image","text"},
                new int[]{R.id.listImage,R.id.listText});

        listView.setAdapter(simpleAdapter);
    }

//    数据源
    private List<Map<String, Object>> getData() {
        for (int i = 0; i < 10; i++) {
            Map<String,Object> map=new HashMap<>();
            map.put("image",R.mipmap.orange);
            map.put("text","file"+(i+1));
            mapList.add(map);
        }
        return mapList;
    }

image.png

image.png

世上最好的等待叫来日可期