Android简单的ListView使用和点击事件

目录

为什么写这篇博客

今天重温了一遍ListView的用法,边看边结合自己手上的两本书写了百来行代码,然后觉得需要归纳总结一波,因此写下来,一方面巩固已有的知识,另一方面也希望看到的人少走弯路。博主也在认真学习AS,仅供参考,如果遇到了什么错误,希望看到的大佬们不要让它留在那里了!可以积极批评指正,一同进步。

正经的正文

内容简介

其实也没什么神秘的,就是一个简单的ListView的展示和响应事件的编写。

工具

  • Android Studio
  • gradle version : 4.1
  • Android Plugin version :3.0.1

代码正文及说明

写在代码前面的小说明

想了想还是稍微说明一下吧。诚如我们所见,ListView不是像Button一样只要写上去就能能直接用的控件,要让一个ListView控件能正常使用,我们需要:一个ListView、每个ListView都包含了几个Item(大多数情况下它们都长得一样,不一样的我还没有去探索过),还需要一个数据适配的类,这里使用的是BaseAdapter,顾名思义,它是个基本的适配器,其他类型的还有SimpleAdapter、ArrayAdapter等。这里的代码并没有涉及到对ListView的优化,后续有时间会做一下更新(挖坑……)。

main_layout.xml

这个文件是进行ListView的布局。

<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="com.example.cryst.first.MainLayoutActivity">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:divider="#d9d9d9"
        android:dividerHeight="1dp"
        ></ListView>
</RelativeLayout>

list_Item.xml

根据我们日常生活的经验都能知道,我们的ListView里面具有很多很多的条目,你可以理解为这个xml就是用来设计ListView中的项,我们称之为Item的。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    >
    <ImageView
        android:id="@+id/item_image"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_margin="8dp"
        android:background="@drawable/one"
        />
    <TextView
        android:id="@+id/item_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是ListView的item布局"
        android:textSize="18sp"
        />
</LinearLayout>

MainLayoutActivity

这是唯一的一个.java文件,这个文件分两个部分,一个部分是对ListView的布局和响应,另一部分是给ListView添加数据适配。其中MyBaseAdapter类继承自BaseAdapter类,这个类在实际的运用中可以单独创建一个java文件用于数据适配。
然后,对于单击事件的响应,用的是Toast方法直接弹出提示,就没有另外写页面啦,记得要添加监听器和导包哦!

public class MainLayoutActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{

    private ListView mListView;
    private String[] names = {"one","two","three","four","five","six","seven","eight","nine","ten"};
    private int[] icons = {R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one,R.drawable.one};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        init();
        MyBaseAdapter mAdapter = new MyBaseAdapter();
        mListView.setAdapter(mAdapter);
        mListView.setOnItemClickListener(this);
    }
    private void init() {
        mListView = (ListView) findViewById(R.id.lv);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        String text = (String)((TextView)view.findViewById(R.id.item_tv)).getText();
        String showText = "点击第" + position + "项,文本内容为:" + text + ",ID为:" + id;
        Toast.makeText(this, showText, Toast.LENGTH_LONG).show();

    }

    class MyBaseAdapter extends BaseAdapter{
        public int getCount(){
            return names.length;
        }

        @Override
        public Object getItem(int position) {
            return names[position];
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = View.inflate(MainLayoutActivity.this,R.layout.list_item,null);
            TextView mTextView = (TextView) view.findViewById(R.id.item_tv);
            mTextView.setText(names[position]);
            ImageView imageView = (ImageView) view.findViewById(R.id.item_image);
            imageView.setBackgroundResource(icons[position]);
            return view;
        }
    }
}

效果图

ListView效果图

不正经的总结

感觉也没有说什么呢!嘿嘿,毕竟我也只是个小萌新啊,万一说错了带坏了后来的小萌新怎么办。
说简单就是那么简单,只需要三个文件就能轻松的理解(起码我觉得写的还是很容易懂的)ListView啦!
代码部分个人觉得应该没有特别花哨的地方,没有那种明明本质上是一样的但是要换花样继续写的部分,条理还算清晰?(我也不知道啊!!!)
等我变成了厉害一点的程序员之后一定会进一步丰富文章内容的!
然后这是我写的第一篇博客,以后,咳咳,大概还会写?
好啦,不立flag了,好好学习好吧,立什么flag!
最后,共勉。

猜你喜欢

转载自blog.csdn.net/qq_37736907/article/details/88138435