简单entries属性的ListView和BaseAdapter的使用

1.简单entryies属性的ListView

主界面增加按钮

string中增加一个字符串

<string name="btnListStu">ListViewStudent</string>

布局中加入测试按钮

<Button
        android:id="@+id/btnListView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btnListStu"
        android:textSize="@dimen/mainFontSize"/>

创建Activity

public class ListStudentActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_student);
    }
}

创建listview展示布局界面

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        />
</androidx.constraintlayout.widget.ConstraintLayout>
//都是Match_partent不用定位

MainActivity中增加按钮跳转

Button btnListView;//定义按钮


btnListView=findViewById(R.id.btnListView);//绑定


btnListView.setOnClickListener(this);//设置匿名类,直接实现接口的方法

//执行监听器
@Override
    public void onClick(View view) {
        int id = view.getId();
        switch (id){

            case R.id.btnListView:
                Intent intent=new Intent((MainActivity.this,ListStudentActivity.class));
                startActivity(intent);      //跳转页面
                break;
            }
    
    }

给ListView设置entries属性、运行安装app

界面展示如下 

对ListView的每一项绑定点击事件,点击选项输出定位

public class ListStudentActivity extends AppCompatActivity {
    ListView listView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_student);
        listView=findViewById(R.id.listview);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
                Log.d("test", "onItemClick: "+pos);
            }
        });

    }
}

2.SimpleAdapter适配器的ListView

删掉xml中的entries属性

SimpleAdapter adapter =new SimpleAdapter(this,data,R.layout.stu_item_layout,froKey,toID);
五个参数,
第二个是数据源,第三个ListView一行的布局文件
第四个是数据源中数据项名,第五个是数据项名对应布局中的哪个id

listView.setAdapter(adapter);

手动模拟一个数据源

ArrayList<HashMap<String,String>> data;  List中是哈希map,HashMap中是Key,value


  模拟从数据库中获取50条数据
    private ArrayList<HashMap<String,String>> getData(){
        ArrayList<HashMap<String,String>> list =new ArrayList<>();
        for (int i=0;i<50;i++)
        {
            HashMap<String,String> map=new HashMap<>();
            map.put("xm","xxxxm"+i);
            map.put("dh","xxxxm"+i);
            map.put("dz","xxxxm"+i);
            map.put("xm","xxxxm"+i);
            list.add(map);
        }
        return list;
    }

根据参数写一个Adapter的布局文件,展示在Listview

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <TextView
        android:id="@+id/item_xm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        />
    <TextView
        android:id="@+id/item_dh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        />
    <TextView
        android:id="@+id/item_addr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/item_xm"
        app:layout_constraintLeft_toLeftOf="@id/item_xm"
        />

</androidx.constraintlayout.widget.ConstraintLayout>

获取数据,设置formkey,toid两个参数

data =getData();

表示从hash中获取的属性
String[] froKey=new String[]{"xm","dh","dz"};

表示要给适配器布局中哪几个对象赋值
int [] toID=new int[]{R.id.item_xm,R.id.item_dh,R.id.item_addr};
一定要对应,否则会乱

使用Adapter适配器

​
SimpleAdapter adapter =new SimpleAdapter(this,data,R.layout.stu_item_layout,froKey,toID);
五个参数,
第二个是数据源,第三个ListView一行的布局文件
第四个是数据源中数据项名,第五个是数据项名对应布局中的哪个id

listView.setAdapter(adapter);

​

检验效果

最后对于点击,将数据在后台接受的方法是通过id获得

public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
                Log.d("test", "onItemClick: "+pos);
                HashMap<String,String> map=data.get(pos);  创建一个map对象,由下标接受对象
                map.get("xm"); 取得map中的属性
            }

总结:Listview是一个显示框架,显示什么由Adapter决定 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码敲上天.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值