Android ListView中的简单分组(标题含图片)

思路:ListView中添加一个SimpleAdapter,SimpleAdapter中动态添加大标题及大标题下的小标题,接下来按照思路来进行。

第一步:建立ListView布局文件list.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="horizontal"
 6     tools:context=".MainActivity" >
 7         <ListView
 8             android:id="@+id/list"
 9             android:layout_width="fill_parent"
10             android:layout_height="wrap_content" >
11         </ListView>
12  </LinearLayout>

第二步:建立list_items_menu.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="4sp"
    android:paddingLeft="12sp"
    android:paddingRight="12sp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >

        <TextView
            android:id="@+id/ItemTitle"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:layout_marginBottom="4dp"
            android:layout_marginTop="7dp"

            android:text="标题" /> 

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/ItemImage"
            android:layout_width="40sp"
            android:layout_height="40sp"/>

        <TextView
            android:id="@+id/xiaoItemTitle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="小标题"
            android:textSize="15sp" />
    </LinearLayout>

</RelativeLayout>

第三步:建立activity类

package com.example.test_menu;

import java.util.ArrayList;
import java.util.HashMap;

import com.example.test_menu.R;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;

public  class Test extends Activity {

    ArrayList<HashMap<String, Object>> listItem;
    HashMap<String, Object> map ;
    SimpleAdapter listItemAdapter;
    ListView list ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置屏幕没有标题
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        // 去掉标题栏
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.list);

        // 绑定Layout里面的ListView
         list = (ListView) findViewById(R.id.list);

        // 生成动态数组,加入数据
        listItem = new ArrayList<HashMap<String, Object>>();
        String[] a={"管网动态","施工日报","通知公告"};
        String[] b={"运行管理","运行监控","路径模拟优化","物料移动作业","阀门开关管理"};
        String[] c={"巡检管理","巡检方案","巡检记录","巡检监控"};
        String[] d={"专项管理","场站管理","管线管理","管廊管理","阀门管理"};

        // 小标题前面的图标
        int[] Image_a={R.drawable.ic_launcher,R.drawable.lcmn,R.drawable.lct,R.drawable.ic_launcher};

        map(a,Image_a);
        map(b,Image_a);
        map(c,Image_a);
        map(d,Image_a);
         listItemAdapter = new SimpleAdapter(this, listItem,// 数据源
                R.layout.list_items_menu,// ListItem的XML实现
                // 动态数组与ImageItem对应的子项
                new String[] {"ItemTitle", "ItemImage", "xiaoItemTitle" },
                // ImageItem的XML文件里面的一个ImageView,TextView ID
                new int[] { R.id.ItemTitle,R.id.ItemImage, R.id.xiaoItemTitle });

        // 添加并且显示
        list.setAdapter(listItemAdapter);

        // 添加菜单点击
        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                for (int i = 0; i < listItem.size(); i++) {

                    if (arg2 == i) {

                        Toast.makeText(getApplicationContext(),
                                listItem.get(arg2).get("xiaoItemTitle") + "    " + arg2, Toast.LENGTH_SHORT)
                                .show();
                    }

                }
            }
        });

    }
    public void map(String[] a,int[] Image){

        for(int i=0;i<a.length;i++){

            map = new HashMap<String, Object>();
         for(int j=0;j<Image.length;j++){

            if(i==0){

                map.put("ItemTitle", a[0]);

            }else if(i==(j+1)){
              map.put("ItemImage", Image[j]);// 图像资源的ID
              map.put("xiaoItemTitle", a[i]);
            }
         }
         listItem.add(map);
        }

    }

}

效果如下:

新手小小思路,请大家多多包涵!

时间: 2024-08-25 13:36:16

Android ListView中的简单分组(标题含图片)的相关文章

android ListView中CheckBox错位的解决

貌似已经很晚了,但是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,可是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并不是你选中的,百思不得其解.后面通过上网查资料,可是个说纷纭,但是我还是找到了解决办法. 在自定义的适配器中,对checkBox的设置如下: 记住两者的顺序,先对checkBox进行事件监听,再设置其状态.前提在布局中对checkBox的状态设为false. android ListView中CheckBox错位的解决,布布扣,bubuko.

android listview中item通过viewpager实现

android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项目主要介绍多个viewpager加载图片和listview 上下滑动不卡顿问题.本项目由作者Flyco分享的分享地址:https://github.com/H07000223/FlycoBanner_Master.本项目找对应id封装一个ViewFindUtils类,通过如下代码找id    /**

android Listview 软引用SoftReference异步加载图片

首先说一下,android系统加载大量图片系统内存溢出的3中解决方法: (1)从网络或本地加载图片的时候,只加载缩略图.这个方法的确能够少占用不少内存,可是它的致命的缺点就是,因为加载的是缩略图,所以图片失真比较严重,对于对图片质量要求很高的应用,可以采用下面的方法 /** *按照图片路径加载 *@param path图片资源的存放路径 *@param scalSize缩小的倍数 *@return */ public static Bitmap loadResBitmap(String path

Android ListView 中的onItemClick方法中Intent 无法跳转的解决方案

I found this somewhere after googling There will be case that your custom list item doesn’t respond when you click…so what’s the reason and what’s the solution? Here several problems and solutions: 1. Scenario: list item layout contains CheckBox Prob

Android ListView中 每一项都有不同的布局

实现代码 Adapter的代码 其中:ViewHolder分别是三个不同的布局,也就是ListView中每一项的布局 TYPE_1...是三种类型. 在使用不同布局的时候,getItemViewType和getViewType不能少,一般是不用这两个函数的重载的 class RunRankAdapter extends BaseAdapter { ArrayList<HashMap<String, Object>> ls; Context mContext; LinearLayou

Android listview中使用button解决方法

其实很多东西不是粘贴代码就能解决的,做任何事都要用心做,这样才能晚上睡觉睡得比较踏实. 当你粘贴别人的代码,有时候出bug真的很烦,可是当你明白点原理的时候,能看出问题的实质,解决起来也很得心应手,开始今天的主题.当你的看到这个问题时,你应该知道问题出在哪里了,在listview中使用button(当然不只是button,还有imagebutton等自身响应点击的view),问题出现了,你会发现listview中的item不能点击了,具体是因为什么呢?大多数原因是抢焦点,button抢占了ite

Android ListView中EditView再次焦点获取

问题:在ListView中使用EditView,当第一次将焦点给到EditView的时候弹出小键盘.使得EditView失去焦点. 分析:因为在第一次使用EditView弹出小键盘之后,会重新的调用一次getView方法.使得EditView失去焦点.当第二次点击EditView时,已经存在小键盘所以不会调用getView方法,因此也不会失去焦点. 思路:在每次点击EditView的时候,记录当前点击的View的position同时记录EditView的光标偏移位置.在下次调用getView的时

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

Android ListView 中加入CheckBox/RadioButton 选择状态保持、全选

最近在一个项目中,需要在ListView的item中加入CheckBox,但是遇到的一个问题是上下滑动的时候如果有选择了的CheckBox,就会出现选择项错误的问题,下面将个人的解决方法总结如下; 先说思路: 在ListView的Adapter中,用一个Map保存每一项item的选择状态,在getView方法中,设置Map中保存的某一项的选择状态就实现了状态的保存: 每一项的视图 child.xml <CheckBox        android:id="@+id/item_cb&quo