android-使用ListView设置列表,能够滑动和点击
效果
一,设置一下基本布局
在layout文件夹下
<LinearLayout android:layout_height="wrap_content"
android:layout_width="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:id="@+id/lv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
二,设置一下其中的小列表布局,为了方便内容设置为text
在layout文件夹下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/textview"
android:textSize="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
三,设置一个Bean类,为每一个小列表存储数据
package com.example.layout;
import androidx.annotation.NonNull;
public class Bean {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Bean(String name) {
this.name = name;
}
String name;
}
四,为列表填充数据,获取listView ,向其中渲染布局
用循环beanlist 中为我们想要列表表示的数据,获取listView 后,向其中添加适配器,这里需要自己定义,下一步介绍
private List<Bean> beanlist =new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int i=0;i<100;i++)
{
Bean bean = new Bean("hello"+i);
// bean.setName("hello"+i);
beanlist.add(bean);
}
ListView listView = findViewById(R.id.lv);
listView.setAdapter(new myadapter(beanlist,this));
}
五,适配器myadapter
public class myadapter extends BaseAdapter {
private List<Bean> data;
private Context context;
public myadapter(List<Bean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
//获取视图View 即返回每一个设置了数据的Item小框
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view == null)
{
//这个view就是那个小的条目,并且小条目是一直不但复用的,所以避免多次创建
//item==null时,再获取Item条目的布局
// LayoutInflater.from(context) 获取LayoutInflater inflate() 渲染返回布局
view = LayoutInflater.from(context).inflate(R.layout.line_view,viewGroup,false);
}
TextView textview = view.findViewById(R.id.textview);
textview.setText((data.get(i).getName()));
Log.e("mm", "getView"+i);
return view;
}
}
六,为事件设置点击
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.e("mm", "onItemClick"+i );
}
});