android 32 Gallery:横着滚动的列表

简介:

Gallery:横着滚动的列表

 mainActivity.java

复制代码
package com.sxt.day05_01;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.sxt.day05_01.entity.GeneralBean;

public class MainActivity extends Activity {
    Gallery mGallery;
    List<GeneralBean> mGenerals;//代表十个军事家的集合
    GeneralAdapter mAdapter;
    int[] resid={
        R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
        R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
        R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
        R.drawable.zhuyuanzhang
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();//初始化数据
        initView();
        setListener();
    }
    
    private void setListener() {
        setOnItemClickListener();
        setOnItemLongClickListener();
        
    }

    private void setOnItemLongClickListener() {
        mGallery.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被长按", 2000).show();
                return true;
            }
        });
    }

    private void setOnItemClickListener() {
        mGallery.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被短按", 2000).show();
            }
        });
    }

    private void initView() {
        mGallery=(Gallery) findViewById(R.id.galleryGeneral);
        mAdapter=new GeneralAdapter();//创建适配器
        mGallery.setAdapter(mAdapter);//关联适配器
    }

    private void initData() {
        //将资源中的字符串组数转换为Java数组
        String[] names=getResources().getStringArray(R.array.generals);
        mGenerals=new ArrayList<GeneralBean>();
        for (int i = 0; i < names.length; i++) {
            GeneralBean bean=new GeneralBean(resid[i], names[i]);
            mGenerals.add(bean);
        }
    }

    //适配器
    class GeneralAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return Integer.MAX_VALUE;//设置Gallery的长度为21亿,使得水平滚动的列表到最后的时候又从第一个开始
        }

        @Override
        public GeneralBean getItem(int position) {
            return mGenerals.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        //滚动的时候显示Gallery中第position位置的单个布局,position从0到21亿,使得水平滚动的列表到最后的时候又从第一个开始
        public View getView(int position, View convertView, ViewGroup parent) {
            //拿到ListViewItem的布局,转换为View类型的对象
            View layout=View.inflate(MainActivity.this, R.layout.item_generals, null);
            ImageView ivThumb=(ImageView) layout.findViewById(R.id.ivThumb);
            TextView tvName=(TextView) layout.findViewById(R.id.tvName);
            
            //position%mGenerals.size()使得水平滚动的列表到最后的时候又从第一个开始
            GeneralBean bean=mGenerals.get(position%mGenerals.size());
            ivThumb.setImageResource(bean.getResid());
            tvName.setText(bean.getName());
            return layout;//返回第position位置的单个布局,也就是item_generals.xml的LinearLayout
        }
        
    }
}
复制代码

main.xml

复制代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Gallery
        android:id="@+id/galleryGeneral"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spacing="2dp"/>

</RelativeLayout>
复制代码
item_generals.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="wrap_content"
    android:orientation="vertical" >
    <ImageView 
        android:id="@+id/ivThumb"
        android:layout_width="80dp"        上图下字
        android:layout_height="80dp"
        android:scaleType="fitXY"
        android:src="@drawable/baiqi"/>
    <TextView 
        android:id="@+id/tvName"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:text="白起"
        android:textSize="20sp"
        android:gravity="center_horizontal"/>
</LinearLayout>
复制代码

GeneralBean.java

复制代码
public class GeneralBean {

    private int resid;//图片的id值
    private String name;//军事家的姓名
    public int getResid() {
        return resid;
    }
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4887804.html,如需转载请自行联系原作者


相关文章
|
5月前
|
存储 数据库 Android开发
安卓Jetpack Compose+Kotlin,支持从本地添加音频文件到播放列表,支持删除,使用ExoPlayer播放音乐
为了在UI界面添加用于添加和删除本地音乐文件的按钮,以及相关的播放功能,你需要实现以下几个步骤: 1. **集成用户选择本地音乐**:允许用户从设备中选择音乐文件。 2. **创建UI按钮**:在界面中创建添加和删除按钮。 3. **数据库功能**:使用Room数据库来存储音频文件信息。 4. **更新ViewModel**:处理添加、删除和播放音频文件的逻辑。 5. **UI实现**:在UI层支持添加、删除音乐以及播放功能。
|
3月前
|
Android开发 开发者 UED
Android项目架构设计问题之加载数据到列表如何解决
Android项目架构设计问题之加载数据到列表如何解决
32 0
|
5月前
|
存储 API Android开发
29. 【Android教程】折叠列表 ExpandableListView
29. 【Android教程】折叠列表 ExpandableListView
457 2
|
5月前
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
148 2
|
5月前
|
安全 Java API
Android获取Wi-Fi网络列表
【6月更文挑战第21天】
|
6月前
|
Android开发
Android获取蓝牙设备列表的方法
Android获取蓝牙设备列表的方法
513 5
|
6月前
|
Android开发
Android 获取 USB设备列表
Android 获取 USB设备列表 【5月更文挑战第6天】
180 4
|
6月前
|
存储 缓存 Android开发
构建高效的Android应用:采用RecyclerView优化列表显示
【4月更文挑战第2天】 在移动开发领域,列表显示是最常见的用户界面组件之一。对于Android平台而言,RecyclerView因其高效、灵活的特点而备受开发者青睐。本文将深入探讨如何利用RecyclerView在Android应用中实现流畅的列表滚动,以及通过各种优化策略来提升性能和用户体验。我们将从基本概念出发,逐步展开如何自定义适配器、视图持有者,以及利用布局管理器来实现复杂的列表布局。此外,还将讨论如何通过异步加载、缓存机制和动态数据更新来进一步优化性能。
90 1
|
6月前
|
XML Java Android开发
Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)
Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)
91 0
Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)
|
6月前
|
Android开发 Kotlin
android开发,使用kotlin学习滚动控件RecyclerView
android开发,使用kotlin学习滚动控件RecyclerView
166 0