`
wang_peng1
  • 浏览: 3944440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hashmap listView

阅读更多

package com.dev.multicolumn.listview;

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

import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class MultiColumnListView extends Activity {
    /** Called when the activity is first created. */
	// I use HashMap arraList which takes objects
	private ArrayList <HashMap<String, Object>> myBooks;
	private static final String BOOKKEY = "bookname";
	private static final String PRICEKEY = "bookprice";
	private static final String IMGKEY = "iconfromraw";
	private static final String RATINGKEY = "ratings";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListView listView = (ListView)findViewById(R.id.list);
        myBooks = new ArrayList<HashMap<String,Object>>();
        HashMap<String, Object> hm;
        
       
        //With the help of HashMap add Key, Values of Book, like name,price and icon path 
        hm = new HashMap<String, Object>();
        hm.put(BOOKKEY, "Android");
        hm.put(PRICEKEY, "Price Rs: 500");
        hm.put(IMGKEY, R.raw.android); //i have images in res/raw folder
        hm.put(RATINGKEY, 2);
        myBooks.add(hm);
        
        hm = new HashMap<String, Object>();
        hm.put(BOOKKEY, "PHP");
        hm.put(PRICEKEY, "Price Rs: 250");
        hm.put(IMGKEY, R.raw.php);
        hm.put(RATINGKEY, 1);
        myBooks.add(hm);
        
        hm = new HashMap<String, Object>();
        hm.put(BOOKKEY, "Java");
        hm.put(PRICEKEY, "Price Rs: 399");
        hm.put(IMGKEY, R.raw.java);
        hm.put(RATINGKEY,3);
        myBooks.add(hm);
        
        hm = new HashMap<String, Object>();
        hm.put(BOOKKEY, "C++");
        hm.put(PRICEKEY, "Price Rs: 450");
        hm.put(IMGKEY, R.raw.cplusplus);
        hm.put(RATINGKEY, 2);
        myBooks.add(hm);
       // 
      //  SimpleAdapter adapter = new SimpleAdapter(this, myBooks, R.layout.listbox, 
        		//new String[]{BOOKKEY,PRICEKEY,IMGKEY}, new int[]{R.id.text1, R.id.text2, R.id.img});
       // ListAdapter adapter = new myListAdapter(myBooks); 		
        listView.setAdapter(new myListAdapter(myBooks,this));
        listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    }
    
	

	
    private class myListAdapter extends BaseAdapter{
    	
    	private ArrayList<HashMap<String, Object>> Books; 
    	private LayoutInflater mInflater;
    	
    	
		public myListAdapter(ArrayList<HashMap<String, Object>> books, Context context){
			
			
			Books = books;
			mInflater = LayoutInflater.from(context);
		}
    	
    	
    	@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return Books.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return Books.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			// A ViewHolder keeps references to children views to avoid unneccessary calls
            // to findViewById() on each row.
			ViewHolder holder;
			
			// When convertView is not null, we can reuse it directly, there is no need
            // to reinflate it. We only inflate a new View when the convertView supplied
            // by ListView is null
			 if (convertView == null) {
	             convertView = mInflater.inflate(R.layout.listbox, null);
	             // Creates a ViewHolder and store references to the two children views
	             // we want to bind data to.
	             holder = new ViewHolder();
	             holder.v = (TextView) convertView.findViewById(R.id.text1);
	             holder.v1 = (TextView) convertView.findViewById(R.id.text2);
	             holder.icon = (ImageView) convertView.findViewById(R.id.img);
	             holder.rating = (RatingBar)convertView.findViewById(R.id.star);
	             convertView.setTag(holder);
	                
			 }else {
				 // Get the ViewHolder back to get fast access to the TextView
	             // and the ImageView.
				 holder = (ViewHolder) convertView.getTag(); 
			 }
			 	// Bind the data with the holder.
			 
				holder.v.setText((String) Books.get(position).get(BOOKKEY));
				
				holder.v1.setText((String) Books.get(position).get(PRICEKEY));
				
				holder.icon.setImageResource((Integer)Books.get(position).get(IMGKEY));
				
				holder.rating.setRating((Integer)Books.get(position).get(RATINGKEY));
				
				return convertView;
		}
		
		static class ViewHolder {
			TextView v;
	    	TextView v1;
	    	ImageView icon;
	    	RatingBar rating;
        }
    	
    }

	
}
 

 

 

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:orientation="horizontal" android:layout_height="wrap_content"> <LinearLayout android:layout_width="265dip" android:orientation="vertical" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/text1" android:textSize="25dip" android:text="This is text1"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/text2" android:text="This is text2"/> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/ratingBarStyleSmall" android:id="@+id/star" android:numStars="10" android:stepSize="0.1" android:isIndicator="true" /> </LinearLayout> <ImageView android:layout_width="55dip" android:layout_height="fill_parent" android:id="@+id/img" /> </LinearLayout>


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/list" /> </LinearLayout>


分享到:
评论

相关推荐

    listview实现,hashmap

    listview实现,hashmaplistview实现,hashmaplistview实现,hashmaplistview实现,hashmaplistview实现,hashmaplistview实现,hashmaplistview实现,hashmaplistview实现,hashmap

    listview中添加CheckBox的完美实现

    ListView 中添加 CheckBox...我们使用了一个自定义的 Adapter 来控制 ListView 中的每个项目,并使用了一个 HashMap 来存储每个项目中的 CheckBox 的状态。这样,我们可以在任何时候获取当前项目中的 CheckBox 的状态。

    listview多选

    本篇文章将详细探讨如何实现ListView的多选功能,特别是通过HashMap来记录选中状态。 首先,我们需要了解ListView的基本工作原理。ListView通常配合Adapter使用,Adapter负责将数据转化为View显示在列表中。在多选...

    ListView和SimpleAdapter的简单应用

    在Android开发中,ListView是一个非常重要的组件,它用于展示大量数据列表,用户可以通过滚动查看不同条目。SimpleAdapter则是ListView常用的适配器,它简化了数据绑定和UI展示的过程。本篇文章将深入探讨ListView和...

    listview+通讯录字母排序

    可以使用HashMap存储这些分组,键为字母,值为包含该字母的联系人列表。 为了展示字母栏,我们可以在ListView的右侧添加一个垂直滚动的TextView,显示所有可能出现的首字母。当用户点击某个字母时,TextView会高亮...

    ListView中的EditText

    最后,为了获取ListView中所有EditText的值,可以在适配器中添加一个方法,遍历HashMap并返回所有值: ```java public List&lt;String&gt; getAllEditTextValues() { List&lt;String&gt; values = new ArrayList(editorValue....

    AndroidListView的三种适配器用法

    3. **创建数据集**:准备一个HashMap或List, ?&gt;&gt;,包含要显示的数据。 4. **创建适配器**:使用`SimpleAdapter`,传入上下文、列表项布局资源ID、数据集、键值映射列表以及列表项的视图类型。 5. **设置适配器**:将...

    android listview 详解 开发指南

    在SimpleAdapter中,我们可以通过HashMap来绑定数据,同时指定布局文件来控制显示样式。 接着,我们来看一下ListView的一些常用特性: 1. **复用机制**:ListView通过ViewHolder模式实现视图的复用,避免了频繁地...

    用BaseAdapter实现的ListView

    使用BaseAdapter的一个优点是它可以处理任何类型的列表数据,无论是ArrayList、HashMap还是其他自定义的数据结构。同时,BaseAdapter也支持复杂的视图复用机制,有助于提高应用的性能。 总结来说,"用BaseAdapter...

    Listview中Editext数据保存

    当用户在EditText中输入时,将输入的文本保存到对应的SparseArray或HashMap中,键为ListView的position,值为EditText的文本。 ```java HashMap, String&gt; editTextValues = new HashMap(); ``` #### 2.2 监听...

    仿知乎日报ListView

    3. **数据结构**:为了管理不同类型的item,我们需要定义一个数据结构来存储这些数据,可能是自定义的Java对象或者List&lt;HashMap, Object&gt;&gt;,其中键值对表示每个item的不同属性。 4. **处理不同类型Item**:在`...

    三种ListView的使用

    在Android开发中,ListView是一个非常重要的控件,用于展示大量数据的列表形式。它通过复用视图(ViewHolder模式)来高效地显示大量的数据项,是应用中展示数据列表的标准方式。本教程将深入讲解ListView的三种常见...

    Android基础:ListView三种使用方法

    它可以将复杂的数据结构(如HashMap)映射到ListView的各个项。SimpleAdapter有一个构造函数,接收数据集、上下文、布局资源ID、数据键值映射列表和默认的视图类型。通过这种方式,开发者可以自定义每个列表项的布局...

    ListView与SimpleAdapter导航简单实例

    在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据列表,比如联系人列表、邮件列表等。它具有良好的可滚动性和可交互性,能够有效地利用屏幕空间。本实例将探讨如何结合SimpleAdapter来创建一个...

    listviewgroup

    我们可以创建一个自定义的Adapter,扩展BaseAdapter类,并在其中维护一个数据结构,如HashMap或ArrayList,用来存储每个组及其对应的子项。数据结构中的每个条目都应包含组名和子项列表。 在Adapter的`getView()`...

    安卓listview相关相关-使用AndroidAnnotations框架优雅地实现ListView功能例子源代码.rar

    5. **数据源**:ListView的数据通常来自一个列表或数组,可以是ArrayList、HashMap或其他集合类型。在Adapter的构造函数中,开发者会传入这个数据源,并在getView()方法中根据数据生成视图。 6. **ViewHolder模式**...

    完美解决ListView和CheckBox的焦点冲突及CheckBox的复用问题

    可以创建一个HashMap来存储每个ListView项的ID和对应的CheckBox状态。在刷新或加载后,根据HashMap恢复CheckBox的状态,确保新加载的数据依然能反映出用户的先前选择。 六、代码实践 在具体实现中,可以创建一个...

    ListView 通过adapter传递对象

    2. **SimpleAdapter**:适用于数据格式已定义的情况,比如HashMap。你可以自定义数据的显示样式,通过设置不同的item布局。 3. **BaseAdapter**:这是Adapter的基类,提供了最基本的接口。如果你需要自定义更复杂的...

    Android Studio如何获取SQLite数据并显示到ListView上

    在数据集(listItem)中,每个条目是一个HashMap,键值对对应于ListView项的不同部分,如图片、类别和金额。 ```java List&lt;HashMap, Object&gt;&gt; listItem = new ArrayList(); // 将数据填充到listItem for (int i = ...

    ListView异步加载图片

    1. 创建图片缓存类:创建一个缓存类,例如`BitmapCache`,它包含一个SoftReference数组或者使用HashMap存储SoftReference。这样可以存储图片对象,同时允许在内存紧张时释放缓存。 2. 实现异步加载:使用AsyncTask...

Global site tag (gtag.js) - Google Analytics