Android列表listview带checkbox用到子项布局-项目6

代码如下:   activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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"

    android:orientation="vertical"

    tools:context=".MainActivity">

    <ListView

        android:id="@+id/list_view"

        android:layout_width="match_parent"

        android:layout_height="match_parent" />

</LinearLayout>

Myactivity.java

package com.example.listview2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.ListView;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    //第一步:定义对象

    ListView listView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //第二步:绑定控件

        listView = (ListView) findViewById(R.id.list_view);

        //第三步:准备数据

        List<Fruit> fruitList = new ArrayList<>();

        for(int i = 0; i < 2 ; i++){

            Fruit guanyu = new Fruit(R.drawable.guanyu,"关羽杂志","$16.9元");

            fruitList.add(guanyu);

            Fruit liubei = new Fruit(R.drawable.liubei,"刘备杂志","$29.9元");

            fruitList.add(liubei);

            Fruit zhangfei = new Fruit(R.drawable.zhangfei,"张飞杂志","$15元");

            fruitList.add(zhangfei);

            Fruit zhugeliang = new Fruit(R.drawable.zhugeliang,"诸葛亮杂志","$19.9元");

            fruitList.add(zhugeliang);

            Fruit zhaoyun = new Fruit(R.drawable.zhaoyun,"赵云杂志","$18.8元");

            fruitList.add(zhaoyun);

        }

        //第四步:设计每一个列表项的子布局

        //第五步:定义适配器

        FruitAdapter adapter = new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);

        listView.setAdapter(adapter);

    }

}

Fruit.java

package com.example.listview2;

public class Fruit {

    private int imageId;

    private String name;

    private String price;

    public Fruit(){

    }

    public Fruit(int imageId,String name,String price){

        this.imageId = imageId;

        this.name = name;

        this.price = price;

    }

    public int getImageId(){

        return imageId;

    }

    public String getName(){

        return name;

    }

    public String getPrice(){

        return price;

    }

}

FruitAdaper.java

package com.example.listview2;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.CheckBox;

import android.widget.ImageView;

import android.widget.TextView;

import androidx.annotation.NonNull;

import androidx.annotation.Nullable;

import java.util.List;

public class FruitAdapter extends ArrayAdapter<Fruit> {

    //用于上下文,ListView子项布局的id和数据都传递过来

    public FruitAdapter(@NonNull Context context, int resource, @NonNull List<Fruit> objects) {

        super(context, resource, objects);

    }

    //每个子项被滚动到屏幕内的时候会被调用

    @NonNull

    @Override

    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

        //得到当前项的Fruit实例

        Fruit fruit = getItem(position);

        //为每一个子项加载设定的布局

        View view = LayoutInflater.from(getContext()).inflate(R.layout.fruit_item, parent, false);

        //分别获取ImageView和TextView的实例

        ImageView fruitImage = view.findViewById(R.id.fruit_image);

        TextView fruitName = view.findViewById(R.id.fruit_name);

        TextView fruitPrice = view.findViewById(R.id.fruit_price);

        CheckBox fruitCheckBox = view.findViewById(R.id.fruit_checkbox);

        //设置要显示的图片和文字

        fruitImage.setImageResource(fruit.getImageId());

        fruitName.setText(fruit.getName());

        fruitPrice.setText(fruit.getPrice());

        // 设置CheckBox的点击事件监听器

        fruitCheckBox.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                if (fruitCheckBox.isChecked()) {

                    fruitCheckBox.setChecked(true);

                } else {

                    fruitCheckBox.setChecked(false);

                }

            }

        });

        return view;

    }

}

Fruit_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">

    <ImageView

        android:id= "@+id/fruit_image"

        android:src="@drawable/sanguo"

        android:layout_width="100dp"

        android:layout_height="80dp" />

    <TextView

        android:id= "@+id/fruit_name"

        android:layout_gravity="center_vertical"

        android:textSize="30sp"

        android:textColor="#000000"

        android:text="name"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

    <TextView

        android:id= "@+id/fruit_price"

        android:layout_gravity="center_vertical"

        android:textColor="#000000"

        android:text="price"

        android:textSize="30sp"

        android:layout_marginLeft="10dp"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

    <CheckBox

        android:id="@+id/fruit_checkbox"

        android:layout_width="match_parent"

        android:layout_height="match_parent" />

</LinearLayout>

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值