listView的使用和场景

前言

人情似水分高下,世事如云任卷舒。


目标:展示应该列表和详情

1 listview 列表展示,图片文字标题
2 webview 详情展示

关键字

listview,adapter,,,,

一、listView是什么

在日常开发中列表展示是基础的功能,所以学习listview是必须的

二、如何实现

样式xml

<LinearLayout 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="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/set_list_view_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
<LinearLayout 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="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/icon_image_view"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:id="@+id/app_name_message"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:gravity="center_vertical"
        android:paddingLeft="6dp"
        android:text="@string/app_name"/>

</LinearLayout>

数据处理

package com.example.administrator.myapplication.handler;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.transition.Scene;
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.ListView;
import android.widget.TextView;

import com.example.administrator.myapplication.R;
import com.example.administrator.myapplication.utils.L;

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

/**
     * @ClassName HanderOneActivity
     * @Author xiaojinlu1990@163.com
     * @Date 时间
     * @Description  列表展示
     * @Version 1.0.0
     */
public class ListViewActivity extends AppCompatActivity {
    /**
     * 步奏
     * 1 在layout创建ListView (activity_list_view.xml)
     * 2 创建每一行layout (activity_app_list.xml)
     * 3 对应创建每一行数据
     * 4 adapter数据填充到每一行
     *  */
    private ListView mListView;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //创建控件空间
        setContentView(R.layout.activity_list_view);
        mListView = (ListView) findViewById(R.id.set_list_view_id);
        //创建数据
        List<String> infos = getAppListString();
        mListView.setAdapter(new AppListAdapter(infos));
    }

    private List<String> getAppListString() {
        List<String> list = new ArrayList<>();
        list.add("app_name1");
        list.add("app_name2");
        list.add("app_name3");
        list.add("app_name4");
        list.add("app_name4");


        return list;

    }

    private List<ResolveInfo> getAppInfos() {
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        return getPackageManager().queryIntentActivities(mainIntent, 0);
    }

    /**
     *
     * 创建list对象
     *
     */

    public class AppListAdapter extends BaseAdapter{

        private List<String> mInfos;
        //构造函数
        public AppListAdapter( List<String> infos) {
            mInfos = infos;
        }

        @Override
        public int getCount() {
            return mInfos.size();
        }

        @Override
        public Object getItem(int position) {
            return mInfos.get(position);
        }

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

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            //获取系统服务
            LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            //引入数据
            convertView = layoutInflater.inflate(R.layout.activity_app_list, null);
            // 获取控件
            TextView textView= (TextView) convertView.findViewById(R.id.app_name_message);
            ImageView imageView = (ImageView) convertView.findViewById(R.id.icon_image_view);
            //渲染数据
            textView.setText(mInfos.get(position));

            return convertView;
        }
    }
}

AndroidManifest.xml注册

        <!-- listview 列表展示 -->
        <activity
            android:name=".handler.ListViewActivity"
            android:label="@string/list_view" />

三、工作原理及优化

待补充

四、使用场景

1 联系人 聊天页面,好友动态
2 通讯录,短息
3 设置页面,各种列表
4 文件夹用列表
5 o2o外卖,评论

扩展及总结

源码请移步:
https://github.com/xiusan/MyApplication/tree/internet

参考

多留言多点赞你们的只支持是我坚持下去的动力,都支棱起来!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值