好的接下来的话就是我们的listview控件了,现在的话就是我们的listview的话就是设置
我们的列表项的,它的话是呈现的是我们的列表的形式显现出来主要的话是用来设置我们
的列表项的如我们的新闻等。
Step1: 创建一个我们的项目,然后的话就是编写我们的xml文件。
Step2: ListView进行数据的展示
然后的话就是我们的基本适配器:BaseAdapter
我们的BaseAdapter的四个方法
1: public int getCount() // 获取的是我们的的item的数量
2: public Object getItem(int position) 根据我们position(位置)得到我们的item对象
3: public long getItemId() 这个方法的话就是根据我们的position得到我们的某个item的id。
4: public View getView(int position,View convertView,ViewGroup parent)第一个的参数的话
对应的是我们的position指的就是我们的position对应的视图,第二个参数的话是复用旧的视图,第三个参数的话是加载我们的xml布局
//然后在这个位置的话就是补充我们的适配器对象:SimpleAdapter的话继承的是我们的
BaseAdapter.
然后的话就是我们的第三个适配器:
然后的话就是我们的实战的演练:
然后的话实战演练的第一步的话就是
1: 创建一个我们的Android项目,然后话编写我们的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--使用我们的相对布局的方式来编写我们的页面布局-->
<ListView
android:id="@+id/ListView"
android:layout_margin="5dp"
android:divider="#5E5E5D"
android:dividerHeight="1dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!--在这个位置的话我们使用到了我们的就是divider指的是我们的分割线然后的话我们制定它的高度是1dp-->
</RelativeLayout>
2: step2: 我们的listview的布局文件写好以后呢?我们的话就创建我们的条目,指代的就是创建我们的条目,item,(条目的创建是在我么的layout下的)。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--好的现在的话我们就是在我们设置的item布局文件中了,现在的话就是编写我们的item的布局的方式
在我们的上面的话我们使它的那个布局的方向是水平垂直的居中,然后的话还有的就是我们的线性方向的
话设置为水平方向
-->
<ImageView
android:background="@mipmap/xwen1"
android:id="@+id/item_image"
android:layout_margin="8dp"
android:layout_width="48dp"
android:layout_height="48dp"/>
<TextView
android:id="@+id/item_iv"
android:textSize="18sp"
android:text="我是listview的item布局"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
然后的话就是编写我们的MainActivity部分的代码:
package com.example.listview;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private ListView listView;
// todo step2: 定义我们需要的适配器数据
private String[] news= {"新闻1","新闻2","新闻3"};
// todo step2: 定义我们图片的集合
private int[] icons = {R.mipmap.xwen1,R.mipmap.xweb,R.mipmap.cshi};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 接下来的话就是编写我们的逻辑部分的代码 TODO step1: 找到我们的ListView控件,然后的话将我们的数据转换成我们的成员变量
listView = (ListView) findViewById(R.id.ListView);
// todo step4: 最后的话就是创建我们的适配器:
MyBaseAdapter mAdapter = new MyBaseAdapter();
//然后的话就是设置我们适配器的方法
listView.setAdapter(mAdapter); //到此的话我们的程序编写完成
}
// todo step3: 然后的话我们是一定要记住的就是我们的listview展示我们的数据的话是一定会用到我们的就是适配器我们的第三步的话就是定义我们的适配器
// 在这个位置定义我们的适配器,定义我们的适配器的话使用到的适配器的话是我们的最基础的适配器
class MyBaseAdapter extends BaseAdapter{
private ImageView imageView;
private TextView textView;
@Override
public int getCount() {
//这个方法的话指代的就是我们的item的数量就是指代的就是我们的数组的长度
return news.length;
}
@Override
public Object getItem(int i) {
// 然后的话就是拿到我们的item对应的对象
return news[i];
}
// TODO 这里的话就是我们使用我们的baseAdapter的话需要实现我们的对应的四个方法
@Override
public long getItemId(int i) {
// 这里的话就是返回的是我们的数组中对应的id
return i;
}
// 这里的话就是得到我们item的view实体
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
// 将我们编写的布局转换成我们的view对象
// todo 然后的话我们的这里又一个方法把我们的view布局转换成我们的view对象
View mview = View.inflate(MainActivity.this,R.layout.list_item,null);
// 找到我们编写的就是设置的view布局文件,然后的话转换成我们的成员变量
imageView = (ImageView) mview.findViewById(R.id.item_image);
textView = (TextView) mview.findViewById(R.id.item_iv);
// 然后的话就是设置我们的数据第一个是我们的文本,第二个的话是我们的背景图片
imageView.setBackgroundResource(icons[i]);
textView.setText(news[i]);
//然后的话就是将我们转换好的view对象返回
return mview;
}
}
}