ListView 显示两列并添加监听(Button 控件除外)

2024-05-24 00:18

本文主要是介绍ListView 显示两列并添加监听(Button 控件除外),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于项目需要,查阅资料自己做的demo,总共两个类,两个布局文件
1.Activity

package com.example.sqlitelistview;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter;public class MainActivity extends Activity { private ListView listView = null; private List<String> nameList = null; private List<String> ageList = null; private MyAdapter adapter = null; // private List<HashMap<String, String>> list= null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.list); adapter = new MyAdapter(this, getNameList(), getAgeList()); listView.setAdapter(adapter); // listView.setAdapter(getAdapter()); //设置监听 // listView.setOnItemClickListener(new OnItemClickListener() { // public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { // } // }); } public List<String> getAgeList(){ ageList = new ArrayList<String>(); for(int i = 1 ; i <= 20 ; i ++){ ageList.add(String.valueOf(i)); } return ageList; } public List<String> getNameList(){ nameList = new ArrayList<String>(); String firstName = "张"; for(int i = 1 ; i <= 20 ; i ++){ nameList.add(firstName + i); } return nameList; } // public List<HashMap<String,String>> getData(){ // HashMap<String, String> userMap = null; // list = new ArrayList<HashMap<String,String>>(); // String name = "张"; // for(int i = 22 ; i < 26 ; i ++){ // userMap = new HashMap<String, String>(); // userMap.put("name",name + i ); // userMap.put("age",String.valueOf(i) ); // list.add(userMap); // } // return list; // } // public SimpleAdapter getAdapter(){ // return new SimpleAdapter(getApplicationContext(), getData(), R.layout.adapter_list, new String[]{"name","age"}, new int[]{R.id.name,R.id.age}); // // } }

2.Adapter

package com.example.sqlitelistview;import java.util.ArrayList; import java.util.List;import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import android.widget.Toast;public class MyAdapter extends BaseAdapter { private Listener listener = null; private Context context; private List<String> name = new ArrayList<String>(); private List<String> age = new ArrayList<String>(); private LayoutInflater inflater; public MyAdapter(Context context,List<String> name, List<String> age){ this.context = context; this.name = name; this.age = age; inflater=LayoutInflater.from(context); listener = new Listener(); } public int getCount() { return name.size(); } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ convertView = inflater.inflate(R.layout.adapter_list, null); } TextView nameView = (TextView) convertView.findViewById(R.id.name); TextView ageView = (TextView) convertView.findViewById(R.id.age); nameView.setText(name.get(position)); ageView.setText(age.get(position)); //设置监听 nameView.setOnClickListener(listener); ageView.setOnClickListener(listener); return convertView; } class Listener implements OnClickListener{ public void onClick(View v) { TextView view = (TextView) v; switch(v.getId()){ case R.id.name: Toast.makeText(context, view.getText(), 0).show(); break; case R.id.age: Toast.makeText(context, view.getText(), 0).show(); break; } } } }


3.layout document

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" ></ListView> </LinearLayout>

4.ListView每列布局

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:gravity="center" android:textSize="12pt" android:clickable="true" ></TextView> <TextView android:id="@+id/age" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:gravity="center" android:textSize="12pt" android:clickable="true" > </TextView></LinearLayout>

这篇关于ListView 显示两列并添加监听(Button 控件除外)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996826

相关文章

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

SpringBoot整合Canal+RabbitMQ监听数据变更详解

《SpringBoot整合Canal+RabbitMQ监听数据变更详解》在现代分布式系统中,实时获取数据库的变更信息是一个常见的需求,本文将介绍SpringBoot如何通过整合Canal和Rabbit... 目录需求步骤环境搭建整合SpringBoot与Canal实现客户端Canal整合RabbitMQSp

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。         基本的按钮特点:         1.按下时都会有“水波文动画”。         2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁用状态,禁用状态不响应用户点击。