Android中如何为ListView设置静态数据

有的时候我们需要为一个listview设置固定的数据,下边就是如何设置静态的数据

布局文件listview 的主页面

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

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </ListView>

</LinearLayout>

然后的一个布局文件为每一个listview的item,listview_item.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="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/listitem_iv"
        android:layout_width="74dp"
        android:layout_height="74dp"
        android:src="@drawable/about_brand" />

    <TextView
        android:id="@+id/listitem_tv"
        android:layout_width="match_parent"
        android:layout_height="74dp"
        android:text="TextView"
        android:textAlignment="center"
        android:textSize="55dp" />

</LinearLayout>

然后关键的是如何设置静态数据:

这界面的控制类ListViewUseAdapter.java

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class ListViewUseAdapter extends Activity {

    private ListView listview;

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

        listview = (ListView) this.findViewById(R.id.listview);

        // 设置适配器的图片资源
        int[] imageId = new int[] { R.drawable.chat_tool_camera,
                R.drawable.chat_tool_location, R.drawable.chat_tool_paint,
                R.drawable.chat_tool_video, R.drawable.chat_tool_voice,
                R.drawable.about_brand };

        // 设置标题
        String[] title = new String[] { "相机", "定位", "画笔", "视频", "声音", "聊天" };
        List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();

        // 将上述资源转化为list集合
        for (int i = 0; i < title.length; i++) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("image", imageId[i]);
            map.put("title", title[i]);

            listitem.add(map);
        }

        ListViewAdapter adapter = new ListViewAdapter(this, listitem);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Toast.makeText(ListViewUseAdapter.this, "haha", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

然后需要的适配器如下:

import java.util.List;
import java.util.Map;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ListViewAdapter extends BaseAdapter {

    private Context context;
    private List<Map<String, Object>> listitem;

    public ListViewAdapter(Context context, List<Map<String, Object>> listitem) {
        this.context = context;
        this.listitem = listitem;
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.listview_item, null);
        }

        ImageView imageView = (ImageView) convertView.findViewById(R.id.listitem_iv);
        TextView textView = (TextView) convertView.findViewById(R.id.listitem_tv);

        Map<String, Object> map = listitem.get(position);
        imageView.setImageResource((Integer) map.get("image"));
        textView.setText(map.get("title") + "");
        return convertView;
    }
}

效果如下:

时间: 2024-10-09 14:02:58

Android中如何为ListView设置静态数据的相关文章

android中scrollview包含listView对高度设置

当scrollview中包含listView时,滑动的时候会出现问题..最常见的问题是listview滑动不了...问题原因是在加载listview时它的高度应该按照adapter所绑定的数据来确定,而不是fill_parent或者是wrap_content... 项目中用到了就把它抽取出来做个记录 import android.view.View; import android.view.ViewGroup; import android.widget.ListAdapter; import

Android中ScrollView嵌套ListView只显示一行的解决方案

Android中ScrollView嵌套ListView只显示一行的解决方案 解决方案1: 直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法. 如果一定要在ScrollView中包含ListView,则参考 解决方案2: public void showlist() { List<HashMap<String, String>> dataHashMaps = new ArrayList<HashMap

android 中 AppWidget 的 ListView 的实现

3.0 以后系统直接支持了ListView. 关于ListView 的国内资料匮乏,大多数例子都是转来转去.由于初学android, 鄙人在搜索资料的时候遇到了不少麻烦~很是郁闷和苦恼~深感国内学习氛围确实怪异,学习方式需要改变.应该多去查看官方文档.... 话不多说,现在开始listView 实现: 这是文档列出的支持的布局和widget控件: A RemoteViews object (and, consequently, an App Widget) can support the fol

android -- 小问题 关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题

关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题: 原因: 首先OnScrollListener是焦点滚动的监听事件,需要有焦点才能响应.如果在ScrollView中内嵌了ListView之后,动态计算了ListView的高度,并予以设置高度,那么这时用户拖动界面,造成的滚动是ScrollView的滚动,而并非ListView的滚动,此时焦点是被ScrollView夺去的,ListView自然就不响应O

Android中通过反射来设置显示时间

这个Toast的显示在Android中的用途还是很大的,同时我们也知道toast显示的时间是不可控的,我们只能修改他的显示样式和显示的位置,虽然他提供了一个显示时间的设置方法,但是那是没有效果的(后面会说到),他有两个静态的常量Toast.SHORT和Toast.LONG,这个在后面我会在源码中看到这个两个时间其实是2.5s和3s.那么我们如果真想控制toast的显示时间该怎么办呢?真的是无计可施了吗?天无绝人之路,而且Linux之父曾经说过:遇到问题就去看那个操蛋的源代码吧!!下面就从源代码开

android中使用JSOUP如何解析网页数据详述

最近使用了Jsoup,感觉还是挺简单,挺方便的,轻而易举地抓取网页源码,分析获取各个标签所需的东西. 这几天在搞一个音乐播放器的小项目,其中使用到了就是使用JSOUP进行页面数据的获取,获取网页的歌曲列表,并对歌曲的链接进行加载,以便实现歌曲下载和歌词的下载.搞好之后,就会跟着写几篇博文,分享给大家.本博文主要说明android中使用jsoup如何进行网页数据的获取. 具体可看下面各个相关例子: Jsoup下载地址: http://jsoup.org/download jsoup开发指南,jso

如何在Android中为TextView动态设置drawableLeft等

如何在Android中为TextView动态设置drawableLeft等 两种方式: 方式1:手动设置固有边界 1 Drawable drawable = getResources().getDrawable(resId); 2 //注意查看方法TextView.setCompoundDrawables(Drawable, Drawable, Drawable, Drawable) 3 //的注释,要求设置的drawable必须已经通过Drawable.setBounds方法设置过边界参数 4

【原创】如何在Android中为TextView动态设置drawableLeft等

如何在Android中为TextView动态设置drawableLeft等 两种方式: 方式1:手动设置固有边界 1 Drawable drawable = getResources().getDrawable(resId); 2 //注意查看方法TextView.setCompoundDrawables(Drawable, Drawable, Drawable, Drawable) 3 //的注释,要求设置的drawable必须已经通过Drawable.setBounds方法设置过边界参数 4

Android中一个关于ListView的奇怪问题

今天在做项目的时候发现了一个比较奇怪的问题,是关于ListView的,即ListView的android:height属性会影响程序中ListView的getView()方法的调用次数,如果设置ListView的android:height属性为0dp,同时设置android:weight=1,或者直接设置android:height属性为"wrap_content",那么ListView在展示数据的时候,getView()被执行的次数并不会是传入数据集合的size,而会比size的值