Android之ListView设置 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    Android开发中,我们常使用到ListView视图,下面介绍ListView的几种使用方法,

Android之ListView设置

主界面

    首先,在主界面上添加几个按钮,用于界面跳转。

    界面布局:

<li><textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/hello_world"><b></button><b></button><b></button><b></button><b></button><b></button><b></button><b></button><b></button></textview></linearlayout>

    源码:

package com.example.listviewdemo;import android.os.Bundle;import android.view.View;import android.app.Activity;import android.content.Intent;public class MainActivity extends Activity{	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);	}		public void Button1(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, Activity01.class);		startActivity(intent);	}		public void Button2(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, Activity02.class);		startActivity(intent);	}		public void Button3(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, Activity03.class);		startActivity(intent);	}		public void Button4(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, SimpleList.class);		startActivity(intent);	}		public void Button5(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, TitleList.class);		startActivity(intent);	}		public void Button6(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, IconList.class);		startActivity(intent);	}		public void Button7(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, ColorList.class);		startActivity(intent);	}		public void Button8(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, ArrayList.class);		startActivity(intent);	}		public void Button9(View v)	{		Intent intent = new Intent();		intent.setClass(MainActivity.this, MyTest.class);		startActivity(intent);	}}

    效果:

   

使用ListView设置界面

package com.example.listviewdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;public class Activity01 extends Activity{	private ListView listView;	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				listView = new ListView(this);        listView.setAdapter(new ArrayAdapter<string>(this, android.R.layout.simple_expandable_list_item_1,getData()));        setContentView(listView);	}		private List<string>getData(){                List<string>data = new ArrayList<string>();        data.add("测试数据1");        data.add("测试数据2");        data.add("测试数据3");        data.add("测试数据4");                return data;    }}</string></string></string></string>

    效果

   

使用SimpleAdapter设置界面

package com.example.listviewdemo;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.ListActivity;import android.os.Bundle;import android.widget.SimpleAdapter;public class Activity02 extends ListActivity{	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.vlist,                new String[]{"title","info","img"},                new int[]{R.id.title,R.id.info,R.id.img});        setListAdapter(adapter);	}		private List<map<string, bject="">> getData() {        List<map<string, bject="">> list = new ArrayList<map<string, bject="">>();         Map<string, bject="">map = new HashMap<string, bject="">();        map.put("title", "标题1");        map.put("info", "内容1");        map.put("img", R.drawable.icon_marka);        list.add(map);                map = new HashMap<string, bject="">();        map.put("title", "标题2");        map.put("info", "内容2");        map.put("img", R.drawable.icon_markb);        list.add(map);                map = new HashMap<string, bject="">();        map.put("title", "标题3");        map.put("info", "内容3");        map.put("img", R.drawable.icon_markc);        list.add(map);                return list;    }}</string,></string,></string,></string,></map<string,></map<string,></map<string,>

    vlist布局

<li><imageview android:id="@+id/img" android:layout_height="wrap_content" android:layout_margin="5px" android:layout_width="wrap_content"><li><textview android:id="@+id/title" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textcolor="#000000" android:textsize="22px"><textview android:id="@+id/info" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textcolor="#000000" android:textsize="13px"></textview></textview></linearlayout></imageview></linearlayout>

    效果

   

使用MyAdapter设置界面

package com.example.listviewdemo;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.AlertDialog;import android.app.ListActivity;import android.content.Context;import android.content.DialogInterface;import android.os.Bundle;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 android.widget.Toast;public class Activity03 extends ListActivity{	private List<map<string, bject="">> mData;	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				mData = getData();        MyAdapter adapter = new MyAdapter(this);        setListAdapter(adapter);	}		private List<map<string, bject="">> getData() {        List<map<string, bject="">> list = new ArrayList<map<string, bject="">>();                Map<string, bject="">map = new HashMap<string, bject="">();        map.put("title", "标题1");        map.put("info", "内容1");        map.put("img", R.drawable.icon_marka);        list.add(map);         map = new HashMap<string, bject="">();        map.put("title", "标题2");        map.put("info", "内容2");        map.put("img", R.drawable.icon_markb);        list.add(map);         map = new HashMap<string, bject="">();        map.put("title", "标题3");        map.put("info", "内容3");        map.put("img", R.drawable.icon_markc);        list.add(map);                 return list;    }	    @Override    protected void onListItemClick(ListView l, View v, int position, long id)     {    	String string = "click" + (String)mData.get(position).get("title");    	Toast.makeText(this, string, Toast.LENGTH_SHORT).show();    }	    public void showInfo()    {        new AlertDialog.Builder(this)        .setTitle("我的listview")        .setMessage("介绍...")        .setPositiveButton("确定", new DialogInterface.OnClickListener()         {            @Override            public void onClick(DialogInterface dialog, int which)             {            }        })        .show();    }        public final class ViewHolder    {        public ImageView img;        public TextView title;        public TextView info;        public Button viewBtn;    }        public class MyAdapter extends BaseAdapter    {        private LayoutInflater mInflater;                public MyAdapter(Context context)        {            this.mInflater = LayoutInflater.from(context);        }                @Override        public int getCount()         {            return mData.size();        }         @Override        public Object getItem(int arg0)         {            return null;        }         @Override        public long getItemId(int arg0)         {            return 0;        }         @Override        public View getView(int position, View convertView, ViewGroup parent)         {            ViewHolder holder = null;            if (convertView == null)             {                holder=new ViewHolder();                                  convertView = mInflater.inflate(R.layout.vlist2, null);                holder.img = (ImageView)convertView.findViewById(R.id.img);                holder.title = (TextView)convertView.findViewById(R.id.title);                holder.info = (TextView)convertView.findViewById(R.id.info);                holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);                convertView.setTag(holder);            }            else             {                holder = (ViewHolder)convertView.getTag();            }                        holder.img.setBackgroundResource((Integer)mData.get(position).get("img"));            holder.title.setText((String)mData.get(position).get("title"));            holder.info.setText((String)mData.get(position).get("info"));                        holder.viewBtn.setOnClickListener(new View.OnClickListener()            {                @Override                public void onClick(View v)                 {                    showInfo();                }            });                        return convertView;        }    }}</string,></string,></string,></string,></map<string,></map<string,></map<string,></map<string,>

    vlist2布局

<li><imageview android:id="@+id/img" android:layout_height="wrap_content" android:layout_margin="5px" android:layout_width="wrap_content"><li><textview android:id="@+id/title" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textcolor="#000000" android:textsize="22px"><textview android:id="@+id/info" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textcolor="#000000" android:textsize="13px"></textview></textview></linearlayout><b></button></imageview></linearlayout>

    效果

   

使用ListActivity设置一行内容界面

package com.example.listviewdemo;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class SimpleList extends ListActivity{	private String[] mListStr = {"标题1:内容1","标题2:内容2","标题3:内容3","标题4:内容4"};    ListView mListView = null;    	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				mListView = getListView();		setListAdapter(new ArrayAdapter<string>(this,android.R.layout.simple_list_item_1, mListStr));		mListView.setOnItemClickListener(new OnItemClickListener()		{		    @Override		    public void onItemClick(AdapterViewadapterView, View view, int position,long id) 		    {		    	Toast.makeText(SimpleList.this,"您选择了" + mListStr[position], Toast.LENGTH_LONG).show();		    }		});	}}</string>

    效果

   

使用ListActivity设置两行内容界面

package com.example.listviewdemo;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class TitleList extends ListActivity{	private String[] mListTitle = { "标题1", "标题2", "标题3", "标题4", "标题5"};    private String[] mListStr = { "内容1", "内容2", "内容3", "内容4", "内容5" };    ListView mListView = null;    ArrayList<map<string,object>> mData= new ArrayList<map<string,object>>();    	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				mListView = getListView();		int lengh = mListTitle.length;		for(int i =0; i < lengh; i++) 		{		    Map<string,object>item = new HashMap<string,object>();		    item.put("title", mListTitle[i]);		    item.put("text", mListStr[i]);		    mData.add(item);		}				SimpleAdapter adapter = new SimpleAdapter(this,mData,android.R.layout.simple_list_item_2,				new String[]{"title","text"},new int[]{android.R.id.text1,android.R.id.text2});		setListAdapter(adapter);		mListView.setOnItemClickListener(new OnItemClickListener() 		{		    @Override		    public void onItemClick(AdapterViewadapterView, View view, int position,long id) 		    {		    	Toast.makeText(TitleList.this,"您选择了标题:" + mListTitle[position] + "内容:"+mListStr[position], Toast.LENGTH_LONG).show();		    }		});	}}</string,object></string,object></map<string,object></map<string,object>

    效果

   

使用ListActivity设置图标和两行内容界面

package com.example.listviewdemo;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class IconList extends ListActivity{	private String[] mListTitle = { "标题1", "标题2", "标题3", "标题4", "标题5"};    private String[] mListStr = { "内容1", "内容2", "内容3", "内容4", "内容5" };    ListView mListView = null;    ArrayList<map<string,object>> mData= new ArrayList<map<string,object>>();    	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				mListView = getListView();		int lengh = mListTitle.length;		for(int i =0; i < lengh; i++) 		{		    Map<string,object>item = new HashMap<string,object>();		    item.put("image", R.drawable.ic_launcher);		    item.put("title", mListTitle[i]);		    item.put("text", mListStr[i]);		    mData.add(item);		}		SimpleAdapter adapter = new SimpleAdapter(this,mData,R.layout.iconlist,			new String[]{"image","title","text"},new int[]{R.id.image,R.id.title,R.id.text});	    setListAdapter(adapter);		mListView.setOnItemClickListener(new OnItemClickListener() 		{		    @Override		    public void onItemClick(AdapterViewadapterView, View view, int position,long id) 		    {		    	Toast.makeText(IconList.this,"您选择了标题:" + mListTitle[position] + "内容:"+mListStr[position], Toast.LENGTH_LONG).show();		    }		});	}}</string,object></string,object></map<string,object></map<string,object>

    iconlist布局

<relativelayout android:layout_height="?android:attr/listPreferredItemHeight" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"><imageview android:adjustviewbounds="true" android:id="@+id/image" android:layout_alignparentbottom="true" android:layout_alignparenttop="true" android:layout_height="fill_parent" android:layout_width="wrap_content" android:padding="2dip"><textview android:gravity="center_vertical" android:id="@+id/title" android:layout_above="@+id/text" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:layout_alignwithparentifmissing="true" android:layout_height="wrap_content" android:layout_torightof="@+id/image" android:layout_width="wrap_content" android:textsize="15dip"><textview android:ellipsize="marquee" android:id="@+id/text" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:layout_height="wrap_content" android:layout_torightof="@+id/image" android:layout_width="fill_parent" android:singleline="true" android:textsize="20dip"></textview></textview></imageview></relativelayout>

    效果

   

使用ListActivity设置背景图标文字效果

package com.example.listviewdemo;import android.app.ListActivity;import android.content.Context;import android.graphics.Color;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.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;public class ColorList extends ListActivity{	private String[] mListTitle = { "标题1", "标题2", "标题3", "标题4", "标题5"};    private String[] mListStr = { "内容1", "内容2", "内容3", "内容4", "内容5" };    ListView mListView = null;    MyListAdapter myAdapter = null;    	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				mListView = getListView();		myAdapter = new MyListAdapter(this);		setListAdapter(myAdapter);		mListView.setOnItemClickListener(new OnItemClickListener() 		{		    @Override		    public void onItemClick(AdapterViewadapterView, View view, int position,long id) 		    {				View v=adapterView.getChildAt(position);				v.setBackgroundColor(Color.RED);				Toast.makeText(ColorList.this,"您选择了" + mListStr[position], Toast.LENGTH_LONG).show();		    }		});	}		class MyListAdapter extends BaseAdapter 	{		private int[] colors = new int[] { 0xff626569, 0xff4f5257 };		public MyListAdapter(Context context) 		{		    mContext = context;		}		public int getCount() 		{		    return mListStr.length;		}		@Override		public boolean areAllItemsEnabled() 		{		    return false;		}		public Object getItem(int position) 		{		    return position;		}		public long getItemId(int position) 		{		    return position;		}		public View getView(int position, View convertView, ViewGroup parent) 		{		    ImageView iamge = null;		    TextView title = null;		    TextView text = null;		    if (convertView == null) 		    {				convertView = LayoutInflater.from(mContext).inflate(R.layout.colorlist, null);				iamge = (ImageView) convertView.findViewById(R.id.color_image);				title =(TextView) convertView.findViewById(R.id.color_title);				text= (TextView) convertView.findViewById(R.id.color_text);		    } 		    int colorPos = position % colors.length;		    convertView.setBackgroundColor(colors[colorPos]);		    title.setText(mListTitle[position]);		    text.setText(mListStr[position]);		    iamge.setImageResource(R.drawable.icon_gcoding);		    return convertView;		}		private Context mContext;	}}

    colorlist布局

<relativelayout android:layout_height="wrap_content" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"><imageview android:adjustviewbounds="true" android:id="@+id/color_image" android:layout_alignparentbottom="true" android:layout_alignparenttop="true" android:layout_height="fill_parent" android:layout_width="wrap_content" android:padding="2dip"><textview android:ellipsize="marquee" android:id="@+id/color_title" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:layout_height="wrap_content" android:layout_torightof="@+id/color_image" android:layout_width="fill_parent" android:singleline="true" android:textsize="15dip"><textview android:ellipsize="marquee" android:id="@+id/color_text" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:layout_below="@+id/color_title" android:layout_height="wrap_content" android:layout_torightof="@+id/color_image" android:layout_width="fill_parent" android:singleline="true" android:textsize="20dip"></textview></textview></imageview></relativelayout>

    效果

   

使用ListActivity设置背景按钮图标文字效果

package com.example.listviewdemo;import android.app.ListActivity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class ArrayList extends ListActivity{	private String[] mListTitle = { "标题1", "标题2", "标题3", "标题4", "标题5"};    private String[] mListStr = { "内容1", "内容2", "内容3", "内容4", "内容5" };    ListView mListView = null;    MyListAdapter myAdapter = null;    ArrayList arrayList = null;    	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				arrayList = this;		mListView = getListView();		myAdapter = new MyListAdapter(this,R.layout.arraylist);		setListAdapter(myAdapter);	}		public class MyListAdapter extends ArrayAdapter<object>{		int mTextViewResourceID = 0;		private Context mContext;		public MyListAdapter(Context context, int textViewResourceId) {		    super(context, textViewResourceId);		    mTextViewResourceID = textViewResourceId;		    mContext = context;		}		private int[] colors = new int[] { 0xff626569, 0xff4f5257 };		public int getCount() 		{		    return mListStr.length;		}		@Override		public boolean areAllItemsEnabled() 		{		    return false;		}		public Object getItem(int position) 		{		    return position;		}		public long getItemId(int position) 		{		    return position;		}		public View getView(final int position, View convertView, ViewGroup parent) 		{		    ImageView iamge = null;		    TextView title = null;		    TextView text = null;		    Button button = null;		    if (convertView == null) 		    {				convertView = LayoutInflater.from(mContext).inflate(mTextViewResourceID, null);				iamge = (ImageView) convertView.findViewById(R.id.array_image);				title = (TextView) convertView.findViewById(R.id.array_title);				text = (TextView) convertView.findViewById(R.id.array_text);				button = (Button)convertView.findViewById(R.id.array_button);				button.setOnClickListener(new OnClickListener() 				{				    @Override				    public void onClick(View arg0) 				    {				    	Toast.makeText(arrayList,"您点击的第"+position +"个按钮", Toast.LENGTH_LONG).show();				    }				});		    }		    int colorPos = position % colors.length;		    convertView.setBackgroundColor(colors[colorPos]);		    title.setText(mListTitle[position]);		    text.setText(mListStr[position]);		    if(colorPos == 0)		    	iamge.setImageResource(R.drawable.icon_st);		    else		    	iamge.setImageResource(R.drawable.icon_en);		    return convertView;		}	}}</object>

    arraylist布局

<relativelayout android:layout_height="wrap_content" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"><b><imageview android:adjustviewbounds="true" android:id="@+id/array_image" android:layout_alignparentbottom="true" android:layout_alignparenttop="true" android:layout_height="fill_parent" android:layout_torightof="@+id/array_button" android:layout_width="wrap_content" android:padding="2dip"><textview android:ellipsize="marquee" android:id="@+id/array_title" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:layout_height="wrap_content" android:layout_torightof="@+id/array_image" android:layout_width="fill_parent" android:singleline="true" android:textsize="15dip"><textview android:ellipsize="marquee" android:id="@+id/array_text" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:layout_below="@+id/array_title" android:layout_height="wrap_content" android:layout_torightof="@+id/array_image" android:layout_width="fill_parent" android:singleline="true" android:textsize="20dip"></textview></textview></imageview></button></relativelayout>

    效果

   

使用ListView设置界面跳转

    第一个界面

package com.example.listviewdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import android.widget.AdapterView.OnItemClickListener;public class MyTest extends Activity{	private ListView listView;		@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				listView = new ListView(this);        listView.setAdapter(new DemoListAdapter());        setContentView(listView);                listView.setOnItemClickListener(new OnItemClickListener() {        	@Override		    public void onItemClick(AdapterViewadapterView, View view, int position,long id)			{        		onListItemClick(position);			}		});	}		void onListItemClick(int index)	{		Intent intent = null;		intent = new Intent(this,demos[index].demoClass);		startActivity(intent);	}		private static final DemoInfo[] demos = {		new DemoInfo(R.string.title1, R.string.content1, MyTest2.class),		new DemoInfo(R.string.title2, R.string.content2, MyTest2.class),		new DemoInfo(R.string.title3, R.string.content3, MyTest2.class),		};		private class DemoListAdapter extends BaseAdapter	{		public DemoListAdapter()		{			super();		}				@Override		public View getView(int position, View convertView, ViewGroup parent)		{			convertView = View.inflate(MyTest.this, R.layout.list, null);			TextView title = (TextView)convertView.findViewById(R.id.title);			TextView desc = (TextView)convertView.findViewById(R.id.info);			title.setText(demos[position].title);			desc.setText(demos[position].desc);			return convertView;		}		@Override		public int getCount()		{			return demos.length;		}		@Override		public Object getItem(int position)		{			return demos[position];		}		@Override		public long getItemId(int position)		{			return position;		}	}		private static class DemoInfo	{		private final int title;		private final int desc;		private final ClassdemoClass;				public DemoInfo(int title, int desc, ClassdemoClass)		{			this.title = title;			this.desc = desc;			this.demoClass = demoClass;		}	}}

    第二个界面

package com.example.listviewdemo;import android.app.Activity;import android.os.Bundle;import android.view.View;public class MyTest2 extends Activity{	@Override	protected void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);				View view = new View(this);		setContentView(view);	}}

    list布局

<li><textview android:id="@+id/title" android:layout_height="wrap_content" android:layout_marginbottom="3dp" android:layout_width="match_parent" android:textsize="18sp"><textview android:id="@+id/info" android:layout_height="wrap_content" android:layout_marginbottom="3dp" android:layout_width="match_parent" android:textsize="12sp"></textview></textview></linearlayout>

    效果

   

最新文章