安卓开发学习7-3:列表类组件

安卓开发学习7-3:列表类组件,第1张

安卓开发学习7-3:列表类组件

下拉列表框

基本使用

静态指定通过Java文件指定内容 列表视图

基本使用

静态指定动态指定 实例 滚动视图

基本使用 选项卡

选项卡实现步骤实例

下拉列表框

基本使用 静态指定


静态指定文件,这里的@array/menu就是在values的定义的arrays文件


arrays.xml




    
        全部
        数学
        英语
        政治
        历史
    

通过Java文件指定内容

1、xml文件




    


2、Java文件

package com.example.test;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.baseAdapter;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.ViewSwitcher;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {


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

        Spinner spinner = findViewById(R.id.spinner);
        String[] menu = new String[]{"全部", "政治", "英语", "数学"};
        
        ArrayAdapter arrayAdapter  = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, menu);
//      指定下拉框下拉时的样式
        arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(arrayAdapter);
//      监听选项改变
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
//              获取被选中的选项,注意开始显示的时候的初始值也会会被调用
                String s = adapterView.getItemAtPosition(i).toString();
                Toast.makeText(MainActivity.this,s, Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onNothingSelected(AdapterView adapterView) {

            }
        });

    }
}
列表视图

基本使用 静态指定

activity_main.xml



    




values/arrays.xml



    
        全部
        数学
        英语
        政治
        历史
    

动态指定

activity_main.xml文件



    

Java文件

 
实例 

1、需求:实现类似朋友圈列表

2、需求分析:对于复杂的列表,使用SimpleAapter进行配置

3、activity_main.xml文件




    


4、自定义cell.xml文件,就是每一个列表




    

    


5、Java文件

package com.example.test;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.baseAdapter;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.ViewSwitcher;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String[] names = new String[]{"小明", "小红", "小兰", "小黄"};
        Integer[] imagesSources = new Integer[]{ R.drawable.img01,R.drawable.img01,R.drawable.img01,R.drawable.img01,};
        List> list = new ArrayList<>();
        for (int i = 0 ; i < names.length ; i++){
            Map map = new HashMap<>();
            map.put("image", imagesSources[i]);
            map.put("name", names[i]);
            list.add(map);
        }
        
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, R.layout.cell,
                new String[]{"image", "name"}, new int[]{R.id.tx, R.id.name});
        ListView listView = findViewById(R.id.listView);
//      点击监听
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView adapterView, View view, int i, long l) {
//              获取点击的昵称
                Toast.makeText(MainActivity.this, ((HashMap)adapterView.getItemAtPosition(i)).get("name").toString(), Toast.LENGTH_SHORT).show();
            }
        });
        listView.setAdapter(simpleAdapter);

    }
}
滚动视图

基本使用


    
        
    

默认是垂直方向滚动
如果需要水平方向滚动可以使用如下

    
        
    

一个滚动视图里边只能放一个组件,如果需要放多个组件就要使用布局管理器



    
        
            
            
        
    

选项卡

选项卡实现步骤

实例

1、实现点击选线卡显示图片

2、activity_main.xml文件




    

        

        

    


3、tab1.xml文件:选项卡一内容




    


4、tab2.xml文件:选项卡二内容




    


5、Java文件

package com.example.study1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import java.util.zip.Inflater;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TabHost tabHost = findViewById(android.R.id.tabhost);
//      创建tabHost
        tabHost.setup();
//      创建选项卡并配置相应的布局文件
        LayoutInflater inflater = LayoutInflater.from(this);
        inflater.inflate(R.layout.tab1, tabHost.getTabContentView());
        inflater.inflate(R.layout.tab2, tabHost.getTabContentView());
//      为每个布局文件配置选项卡并绑定选项卡要显示的内容
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("选项一").setContent(R.id.tab1));
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("选项二").setContent(R.id.tab2));
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5718395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存