发布于2021-05-30 07:39 阅读(1643) 评论(0) 点赞(24) 收藏(0)
ListView 控件可使用四种不同视图显示项目。通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。 可使用 ListView 控件将称作 ListItem 对象的列表条目组织成下列四种不同的视图之一:1.大(标准)图标2.小图标3.列表4.报表 View 属性决定在列表中控件使用何种视图显示项目。还可用 LabelWrap 属性控制列表中与项目关联的标签是否可换行显示。另外,还可管理列表中项目的排序方法和选定项目的外观。
adapter是数据与ui之间的桥梁,它把后台数据与前端ui连接到一起,是一个展示数据的载体。
主要步骤
创建ListView的子项
创建一个Adapter(适配器)对象
创建ListView对象,并且把Adapter装进去
<?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">
<TextView
android:id="@+id/good"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="65dp"
android:layout_marginTop="65dp"
android:text="商品名称:" />
<TextView
android:id="@+id/goodname"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="129dp"
android:layout_marginTop="65dp"
android:text="默认" />
<TextView
android:id="@+id/price"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="65dp"
android:layout_marginEnd="154dp"
android:text="价格:" />
<TextView
android:id="@+id/pricenum"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="65dp"
android:layout_marginEnd="90dp"
android:text="0.0" />
<Button
android:id="@+id/buy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="45dp"
android:text="购买" />
<ImageView
android:id="@+id/img"
android:layout_width="59dp"
android:layout_height="45dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="-1dp"
android:layout_marginTop="45dp"
tools:srcCompat="@tools:sample/avatars" />
</RelativeLayout>
效果图
public class Production {
private String title;
private Double price;
private Integer imgId;
public Production(String title, Double price, Integer imgId) {
this.title = title;
this.price = price;
this.imgId = imgId;
}
public void set(String title, Double price, Integer imgId) {
this.title = title;
this.price = price;
this.imgId = imgId;
}
public Production() {
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Integer getIngId() {
return imgId;
}
public void setIngId(Integer imgId) {
this.imgId = imgId;
}
}
getCount
方法是返回总行数的,也就是数据的条数getItem
返回当前的行的信息getItemId
返回当前的位置,即当前在第几行getView
在这里面进行数据的拼装import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.androidtest.R;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private List<Production> productions = null;
private Context context = null;
public MyAdapter(List<Production> productions, Context context) {
super();
this.productions = productions;
this.context = context;
}
@Override
public int getCount() {
return productions.size();
}
@Override
public Object getItem(int position) {
return productions.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//获取到ListView的子项
convertView = LayoutInflater.from(context).inflate(R.layout.activity_list_view_item, null);
//获取组装item控件,这里是一个图片,俩个文本
ImageView tv_img = convertView.findViewById(R.id.img);
TextView tv_title = convertView.findViewById(R.id.goodname);
TextView tv_price = convertView.findViewById(R.id.pricenum);
Button purchase = convertView.findViewById(R.id.buy);
//待组装的每一个item的bean,从bean中取出数据
Production production = productions.get(position);
Integer imgId = production.getIngId();
String title = production.getTitle();
Double price = production.getPrice();
//设置数据
tv_img.setImageResource(imgId);
tv_title.setText(title);
tv_price.setText(String.valueOf(price));
purchase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "点的是第" + (position + 1) + "行", Toast.LENGTH_LONG).show();
}
});
return convertView;
}
}
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import com.example.androidtest.R;
import java.util.ArrayList;
import java.util.List;
public class ListViewActivity extends AppCompatActivity {
private ListView listView;
private List<Production> productions = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
listView = findViewById(R.id.mylistview);
//主要的作用是封装数据
String[] title = {"商品1", "商品2", "商品3", "商品4", "商品5", "商品6"};
double[] price = {1.11, 2.22, 3.33, 4.44, 5.55, 6.66};
int[] imgId = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher};
productions = new ArrayList<>();
for (int i = 0;i<title.length;i++){
Production production = new Production();
production.set(title[i],price[i],imgId[i]);
productions.add(production);
}
//将数据和context通过自定义Adapter的构造方法传给Adapter
MyAdapter adapter = new MyAdapter(productions,this);
listView.setAdapter(adapter);
}
}
xml文件
<?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=".ListView.ListViewActivity">
<ListView
android:id="@+id/mylistview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
结果
作者:西小口到了吗
链接:http://www.qianduanheidong.com/blog/article/115859/66292b849dcfa175558b/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!