Android学习-列表视图ListView

一、简介:

ListView,列表视图,直接继承了AbsListView,是一个以垂直方式在项目中显示View视图的列表。ListView的数据项,来自一个继承了ListAdapter接口的适配器。

二、新建一个包listview并新建ListViewActivity.java活动:

12345678
public class ListViewActivity extends AppCompatActivity {

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

三、在AndroidManifest.xml中声名activity:

1
<activity android:name=".listview.ListViewActivity"></activity>

四、建立activity_list_view.xml布局:

123456
<?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">

</LinearLayout>

五、在activity_main.xml中新建一个按钮:

123456
<Button        android:id="@+id/btn_listview"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="ListView"        android:textAllCaps="false"/>

六、在MainActivity.java中声名控件:

1
private Button mBtnListView;

七、在MainActivity.java中找到控件:

1
mBtnListView=findViewById(R.id.btn_listview);

八、设置点击事件:

12345678
mBtnListView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //跳转到ListView演示页面                Intent intent=new Intent(MainActivity.this,ListViewActivity.class);                startActivity(intent);            }        });

九、在activity_list_view.xml布局中写代码:

123456789101112
<?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">

<ListView        android:id="@+id/lv_1"        android:layout_width="match_parent"        android:layout_height="wrap_content">

</ListView></LinearLayout>

十、新建layout_list_item.xml:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
<?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"    android:paddingLeft="15dp"    android:paddingRight="15dp"    android:paddingTop="10dp"    android:paddingBottom="10dp">

<ImageView        android:id="@+id/iv"        android:layout_width="100dp"        android:layout_height="100dp"        android:scaleType="centerCrop"        android:background="#000"/>

<LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical"        android:paddingLeft="10dp">

<TextView            android:id="@+id/tv_title"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="Hello"            android:textSize="20sp"            android:textColor="#000"/>

<TextView            android:id="@+id/tv_time"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="2018-11-27"            android:textSize="18sp"            android:textColor="#808080"            android:layout_marginTop="10dp"/>

<TextView            android:id="@+id/tv_content"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="这是内容"            android:textSize="18sp"            android:textColor="#808080"            android:layout_marginTop="10dp"/>

</LinearLayout></LinearLayout>

十一、在包listview中新建MyListAdapter.java继承自BaseAdapter:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
public class MyListAdapter extends BaseAdapter {

private Context mContext;    private LayoutInflater mLayoutInflater;

public MyListAdapter(Context context){        this.mContext=context;        mLayoutInflater=LayoutInflater.from(context);    }

@Override    public int getCount() {        return 10;    }

@Override    public Object getItem(int i) {        return null;    }

@Override    public long getItemId(int i) {        return 0;    }

static class ViewHolder{        public ImageView imageView;        public TextView tvTitle,tvTime,tvContent;    }

@Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder=null;        if(convertView==null){            convertView=mLayoutInflater.inflate(R.layout.layout_list_item,null);            holder=new ViewHolder();            holder.imageView=convertView.findViewById(R.id.iv);            holder.tvTitle=convertView.findViewById(R.id.tv_title);            holder.tvTime=convertView.findViewById(R.id.tv_time);            holder.tvContent=convertView.findViewById(R.id.tv_content);            convertView.setTag(holder);        }else{            holder=(ViewHolder)convertView.getTag();        }        //给控件赋值        holder.tvTitle.setText("这是标题");        holder.tvTime.setText("2018-11-28");        holder.tvContent.setText("这是内容");        Glide.with(mContext).load("https://www.baidu.com/img/bd_logo1.png?where=super").into(holder.imageView);        return convertView;    }}

十二、在ListViewActivity.java中写代码:

12345678910111213
public class ListViewActivity extends AppCompatActivity {

private ListView mLv1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_list_view);

mLv1=findViewById(R.id.lv_1);        mLv1.setAdapter(new MyListAdapter(ListViewActivity.this));    }}

运行结果:

十三、在drawable下新建一个list_item:

1234567
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_selected="true" android:drawable="@color/colorAccent"/>    <item android:state_pressed="true" android:drawable="@color/colorAccent"/>    <item android:state_focused="true" android:drawable="@color/colorAccent"/>    <item android:drawable="@color/colorWhite"/></selector>

十四、在activity_list_view.xml下配置:

12345678910111213
<?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">

<ListView        android:id="@+id/lv_1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:listSelector="@drawable/list_item">

</ListView></LinearLayout>

运行截图:

十五、在ListViewActivity.java设置点击和长按事件:

1234567891011121314
mLv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {         @Override         public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {             Toast.makeText(ListViewActivity.this,"点击 pos:"+position,Toast.LENGTH_SHORT).show();         }     });

mLv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {         @Override         public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long l) {             Toast.makeText(ListViewActivity.this,"长按 pos:"+position,Toast.LENGTH_SHORT).show();             return true;//松开后不会显示点击事件         }     });

运行截图:

原文地址:https://www.cnblogs.com/ycmqaq/p/10029951.html

时间: 2024-07-28 18:33:24

Android学习-列表视图ListView的相关文章

列表视图ListView之一

在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示. 一.简单应用 1.打开"res/layout/activity_main.xml"文件. (1)从工具栏向activity拖出1个列表视图ListView. (2)打开activity_main.xml文件. 完整代码如下: <?xml version="1.0" encoding="utf-8"?><Rela

Android——列表视图(ListView)

列表视图是android中最常用的一种视图组件,它以垂直列表的形式列出需要显示的列表项.在android中有两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建:另外一种是让Activity继承ListActivity实现.下面分别介绍这两种方法: 一.直接使用ListView组件创建 在布局文件中首先添加ListView 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi

Android——列表视图 ListView(三)BaseAdapter

activity_activitybase.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_pa

列表视图ListView之二

在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示. 在上一章,我们采用ArrayAdapter填充ListView,本章我们了解一下SimpleAdapter的应用. 一.SimpleAdapter应用 1.打开"res/layout/activity_main.xml"文件. 完整代码如下: <?xml version="1.0" encoding="utf-8"?>

高级控件【安卓5】——滚动视图、列表视图[ListView、SimpleAdapter类]

滚动视图 <ScrollView android: layout_width="fill_parent" android: layout_height="fill_parent"> </ScrollView> 滚动试图指的是提供一个专门的容器,可以装下多于屏幕宽度的组件,而后采用拖拽的方式 显示所有在ScrollView中的组件 注意:滚动视图中只能有一个组件 列表视图[ListView.SimpleAdapter类] 1.ListView控

android学习笔记之ListView 和Adapter适配器

1.在学习Listview时候用到了Adapter适配器,定义MyAdapter时候需要继承ListAdapter接口,接口里很多方法没有实现,为了方便google工程师实现了个BaseAdapter类,我们在使用的时候可以继承这个抽象类,因此我们只需要完成几个抽象方法就可以了. public class Db_adapter extends BaseAdapter { private Context context; private List<Person> personlist; publ

Android学习——控件ListView的使用

一.ListView的简单用法 首先新建一个ListViewTest项目,并让Android Studio自动创建好活动.然后修改activity_main.xml中的代码,如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android

Android列表视图ListView和ListActivity-android学习之旅(二十四)

ListView简介 ListView是android中常用的一种控件,创建ListView有两种方式: 1.在xml中使用ListView控件创建. 2.使用activity继承ListActivity,然后使用setListAdapter()创建,如果需要在xml中创建,需要android:id = @id:android:list Listview和GridView和Spinner和Gallery等Adapterview都是容器,用adapter来提供数据,而adapterView负责数据

Android学习笔记:ListView简单实用--显示文字列表

在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例子,所以固定写死 items.add("item1"); items.add("item2"); items.add("item3"); ListView listView = (ListView) findViewById(R.id.listVie