基于Android平台开发,在线电影购票系统(十)影院列表实现

1. 涉及到的技术点

  1. 列表控件RecyclerView的使用
  2. Adapter适配器的使用

2. 具体代码实现

  1. activity_cinema_list.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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=".CinemaListActivity">


    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/purple_200"
        app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_24"
        app:title="影院列表"
        app:titleTextColor="@color/white" />


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        tools:listitem="@layout/cinema_list_item" />

</androidx.appcompat.widget.LinearLayoutCompat>
  1. 适配器所需要的Item布局文件cinema_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp">

        <androidx.appcompat.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/tv_cinema_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="90dp"
                android:text="0090激光影城"
                android:textColor="#333333"
                android:textSize="15sp" />


            <TextView
                android:id="@+id/tv_cinema_address"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="10dp"
                android:drawableLeft="@drawable/ic_baseline_location_on_24"
                android:gravity="center_vertical"
                android:text="闵行区七莘路1507号4层电影院"
                android:textColor="#999999"
                android:textSize="13sp" />


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp">


                <androidx.cardview.widget.CardView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:backgroundTint="#fef8e0">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:paddingLeft="6dp"
                        android:paddingTop="3dp"
                        android:paddingRight="6dp"
                        android:paddingBottom="3dp"
                        android:text="4DX厅"
                        android:textColor="#f5810d"
                        android:textSize="10sp"
                        android:textStyle="bold" />
                </androidx.cardview.widget.CardView>


                <androidx.cardview.widget.CardView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:backgroundTint="#ffeef4">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:paddingLeft="6dp"
                        android:paddingTop="3dp"
                        android:paddingRight="6dp"
                        android:paddingBottom="3dp"
                        android:text="杜比全景声厅"
                        android:textColor="#d67477"
                        android:textSize="10sp"
                        android:textStyle="bold" />

                </androidx.cardview.widget.CardView>


                <androidx.cardview.widget.CardView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:backgroundTint="#f4ead4">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:paddingLeft="6dp"
                        android:paddingTop="3dp"
                        android:paddingRight="6dp"
                        android:paddingBottom="3dp"
                        android:text="LUXE巨幕厅"
                        android:textColor="#99763c"
                        android:textSize="10sp"
                        android:textStyle="bold" />

                </androidx.cardview.widget.CardView>


            </androidx.appcompat.widget.LinearLayoutCompat>


            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_marginTop="10dp"
                android:background="#f5f5f5" />

        </androidx.appcompat.widget.LinearLayoutCompat>


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:backgroundTint="@color/purple_200"
            app:cardCornerRadius="15dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="26dp"
                android:gravity="center"
                android:paddingLeft="8dp"
                android:paddingRight="8dp"
                android:text="选座购票"
                android:textColor="@color/white"
                android:textSize="11sp" />
        </androidx.cardview.widget.CardView>
    </RelativeLayout>


</androidx.appcompat.widget.LinearLayoutCompat>
  1. 适配器CinemaListAdapter.java文件
public class CinemaListAdapter extends RecyclerView.Adapter<CinemaListAdapter.MyHolder> {
    private List<CinemaInfo> mCinemaInfoList = new ArrayList<>();


    public void setCinemaInfoList(List<CinemaInfo> commentInfoList) {
        mCinemaInfoList = commentInfoList;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cinema_list_item, parent, false);
        return new MyHolder(view);
    }

    @Override
    @SuppressLint("RecyclerView")
    public void onBindViewHolder(@NonNull MyHolder holder, int position) {
        CinemaInfo cinemaInfo = mCinemaInfoList.get(position);
        holder.tv_cinema_name.setText(cinemaInfo.getCinema_name());
        holder.tv_cinema_address.setText(cinemaInfo.getCinema_address());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (onItemClickListener != null)
                    onItemClickListener.onItemClick(position, cinemaInfo);
            }
        });

    }

    @Override
    public int getItemCount() {
        return mCinemaInfoList.size();
    }

    static class MyHolder extends RecyclerView.ViewHolder {
        private TextView tv_cinema_name;
        private TextView tv_cinema_address;

        public MyHolder(@NonNull View itemView) {
            super(itemView);
            tv_cinema_name = itemView.findViewById(R.id.tv_cinema_name);
            tv_cinema_address = itemView.findViewById(R.id.tv_cinema_address);
        }
    }

    private OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener {

        void onItemClick(int position, CinemaInfo cinemaInfo);
    }
}
  1. CinemaListActivity.java页面
public class CinemaListActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private CinemaListAdapter mCinemaListAdapter;

    private MovieInfo.SubjectsDTO subjectsDTO;

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

        //获取跳转传值
        subjectsDTO = (MovieInfo.SubjectsDTO) getIntent().getSerializableExtra("subjectsDTO");
        //初始化控件
        recyclerView = findViewById(R.id.recyclerView);
        //初始化适配器
        mCinemaListAdapter = new CinemaListAdapter();
        //设置适配器
        recyclerView.setAdapter(mCinemaListAdapter);

        //设置数据
        mCinemaListAdapter.setCinemaInfoList(DataService.getCinemaInfoList());

        //设置监听器
        mCinemaListAdapter.setOnItemClickListener(new CinemaListAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(int position, CinemaInfo cinemaInfo) {
                //跳转到电影购票选日期页面
                Intent intent = new Intent(CinemaListActivity.this, SelectMovieDateActivity.class);
                intent.putExtra("cinemaInfo", cinemaInfo);
                intent.putExtra("subjectsDTO", subjectsDTO);
                startActivity(intent);
            }
        });


        //返回
        findViewById(R.id.toolbar).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
}
  1. CinemaInfo.java 数据实体类
public class CinemaInfo  implements Serializable {
    private String cinema_name;
    private String cinema_address;

    public CinemaInfo(String cinema_name, String cinema_address) {
        this.cinema_name = cinema_name;
        this.cinema_address = cinema_address;
    }

    public String getCinema_name() {
        return cinema_name;
    }

    public void setCinema_name(String cinema_name) {
        this.cinema_name = cinema_name;
    }

    public String getCinema_address() {
        return cinema_address;
    }

    public void setCinema_address(String cinema_address) {
        this.cinema_address = cinema_address;
    }
}

注意事项:数据源自行替换即可

3. 运行效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩宇软件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值