ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.asynctask.MainActivity" > <TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" /> <Button
android:id="@+id/Button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:text="按钮"
/>
<!-- ListView 由item.xml里的TextView给值 。-->
<ListView
android:id="@+id/listView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Button"
/> </RelativeLayout>

效果图:

上下两个xml文件要结合使用。 item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <!-- 下面两个是用来给 activity_main.xml里的ListView赋值,-->
<TextView
android:id="@+id/Textviewname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"
/>
<TextView
android:id="@+id/Textviewage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"
/>
</LinearLayout>

效果图:

java代码:

MainActivity.java

package com.example.asynctask;

import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView; public class MainActivity extends Activity {
private TextView tv1;//item.xml里的TextView:Textviewname
private TextView tv2;//item.xml里的TextView:Textviewage
private Button bt;//activity_main.xml里的Button
private ListView lv;//activity_main.xml里的ListView
private BaseAdapter adapter;//要实现的类
private List<User> userList = new ArrayList<User>();//实体类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.Button);
lv = (ListView) findViewById(R.id.listView1); //模拟数据库
for (int i = 0; i < 5; i++) {
User ue = new User();//给实体类赋值
ue.setName("小米"+i);
ue.setAge("18");
userList.add(ue);
} /* bt.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { }
});*/ adapter = new BaseAdapter() {
@Override
public int getCount() {
// TODO Auto-generated method stub
return userList.size();//数目
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = MainActivity.this.getLayoutInflater();
View view; if (convertView==null) {
//因为getView()返回的对象,adapter会自动赋给ListView
view = inflater.inflate(R.layout.item, null);
}else{
view=convertView;
Log.i("info","有缓存,不需要重新生成"+position);
}
tv1 = (TextView) view.findViewById(R.id.Textviewname);//找到Textviewname
tv1.setText(userList.get(position).getName());//设置参数 tv2 = (TextView) view.findViewById(R.id.Textviewage);//找到Textviewage
tv2.setText(userList.get(position).getAge());//设置参数
return view;
}
@Override
public long getItemId(int position) {//取在列表中与指定索引对应的行id
return 0;
}
@Override
public Object getItem(int position) {//获取数据集中与指定索引对应的数据项
return null;
}
};
lv.setAdapter(adapter);

     
    //获取当前ListView点击的行数,并且得到该数据

    
} }
   //获取当前ListView点击的行数,并且得到该数据
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
tv1 = (TextView) view.findViewById(R.id.Textviewname);//找到Textviewname
str = tv1.getText().toString();//得到数据
Toast.makeText(MainActivity.this, "" + str, Toast.LENGTH_SHORT).show();//显示数据 Intent it = new Intent(MainActivity.this, list0.class); //
Bundle b = new Bundle();
b.putString("we",str); //string
// b.putSerializable("dd",str);
// it.putExtra("str_1",str);
it.putExtras(b);
startActivity(it); }
});

实体类:

  

package com.example.asynctask;

public class User {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
} }

最后结果:

最新文章

  1. Leetcode: Convert sorted list to binary search tree (No. 109)
  2. DataFrame转矩阵Np-Array
  3. Java for LeetCode 041 First Missing Positive
  4. thinkPHP实现瀑布流的方法
  5. c/c++,输入一个字符 2014-11-20 07:00 30人阅读 评论(0) 收藏
  6. Spyder调试错误-&quot;TypeError: decoding Unicode is not supported&quot;
  7. GitHub中最强大的iOS Notifications和AlertView框架,没有之一!
  8. cocos2d导入iOS原生项目
  9. [编织消息框架][JAVA核心技术]异常应用
  10. POST 400 的一次遭遇
  11. linux学习(杂项)
  12. 学习任务,阅读一下Redis分布式锁的官方文档
  13. Qt带返回值的信号发射方式(使用QMetaObject::invokeMethod)
  14. 解决HighChart开发遇到的2个问题
  15. Linux 开启端口命令
  16. 运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签
  17. byte[]-&gt;new String(byte[]) -&gt; getByte()引发的不一致问题
  18. 微信小程序开发——设置默认图片、错误加载图片
  19. 在python中配置MySQL数据库
  20. PyQt4工具栏

热门文章

  1. 【OpenJudge 1665】完美覆盖
  2. Razor.js,基于JavaScript的Razor实现
  3. 连载《一个程序猿的生命周期》-6、自学C++,二级考过后,为工作的机会打下了基础
  4. 开发Portlet第一步:如何基于Crystal开发静态Portlet?
  5. NOI模拟赛Day3
  6. NGUI 之 不为人知的 NGUITools
  7. [老老实实学WCF] 第三篇 在IIS中寄存服务
  8. Thinkphp框架----微信公众测试号开发
  9. Hadoop示例程序WordCount编译运行
  10. java 生成pdf报表
  11. 1.如何安装maven
  12. linux基础命令整理(一)
  13. day13-(事务&amp;mvc&amp;反射补充)
  14. 创建Flask实例对象时的参数和app.run()中的参数
  15. RecyclerView嵌套TextView时显示文字不全的解决方法之一
  16. 漂亮的ActionBar效果
  17. Java基础之基本数据类型的包装类型
  18. How to run WPF – XBAP as Full Trust Application
  19. L脚本语言语法手冊 0.10版
  20. SQLite的基本用法