Android中ListView的item中添加图片和文字
2012-03-19 23:01
429 查看
项目中要求listview中含有文字和图片,主要涉及到3个文件:HomeActivity1.java,homeactivity1.xml,listviewitemstyle.xml(item样式辅助文件,定义item布局)。
效果如下图:
-----------------------------------------------------------------------------------------------
1.HomeActivity1.java如下:
2.homeactivity1.xml如下:
3.listviewitemstyle.xml如下,定义了listview的item中含有1个文本和1个图片:
-----------------------------------------------------------------------------------------------
小结:
实现该效果的关键是:1..要使用SimpleAdapter,且其要用到item样式辅助文件和List<HashMap<String,Object>>;3.handler解析要正确;4.注意要继承ListActivity。
效果如下图:
-----------------------------------------------------------------------------------------------
1.HomeActivity1.java如下:
public class HomeActivity1 extends ListActivity { …… //变量定义,略 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.homeactivity1); new GetSubject().execute();//获取表白主题,并显示在listview中 } public class GetSubject extends AsyncTask<Void, Void, List<HashMap<String,Object>>> { private Exception exception = null; @Override protected List<HashMap<String,Object>> doInBackground(Void... params) { // TODO Auto-generated method stub String xmlString = HttpXml.getSubject("do_get_subject", "0"); try { spf = SAXParserFactory.newInstance(); data = http.doPost(xmlString, name,pass);//获取表白主题的xml报文形式 SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); xr.setContentHandler(handler); xr.parse(new InputSource(new ByteArrayInputStream(data .getBytes()))); //将表白主题的xml报文解析后,返回List<HashMap<String,Object>> //handler的解析很重要,其代码要关注 subjList = handler.getParsedData(); return subjList; } catch (Exception e) { exception = e; return null; } } @Override protected void onPostExecute(List<HashMap<String,Object>> result) { // TODO Auto-generated method stub super.onPostExecute(result); if (result == null) { NotificationsUtil.ToastReasonForFailure(HomeActivity1.this, exception); return; } //重要:继承了ListActivity的类中listview的id为android.R.id.list listView = (ListView)findViewById(android.R.id.list); //关键:SimpleAdapter 可以使listview中的item形式多样 SimpleAdapter adapter = new SimpleAdapter(HomeActivity1.this, result, R.layout.listviewitemstyle, new String[]{"subject","image"}, new int[]{R.id.tvitem,R.id.imgitem}); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id){ Intent intent = new Intent(); intent.setClass(HomeActivity1.this, HomeActivity.class); intent.putExtra("itemText", String.valueOf(listView.getItemAtPosition(position))); Log.v("itemText", String.valueOf(listView.getItemAtPosition(position))); startActivity(intent); } }); } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); //setLoadingView(); http = new FourspaceHttp(); //handler = new MsgHandler(); handler = new SubjHandler(); subjList = new ArrayList<HashMap<String,Object>>();//list将包含表白主题和图片,显示在listview中 prefs = PreferenceManager.getDefaultSharedPreferences(HomeActivity1.this); } } …………//其他代码,略 }
2.homeactivity1.xml如下:
<?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" android:background="@drawable/background"> ……//其他控件定义,略 <RelativeLayout android:layout_marginTop="10dp" android:minHeight="3dip" android:layout_gravity="center_horizontal" android:layout_width="260dp" android:layout_height="360dp"> //重要:继承了ListActivity的类中listview在布局文件中的id为@id/android:list <ListView android:id="@id/android:list" android:cacheColorHint="#00000000" android:background="@color/white" android:minHeight="3dip" android:divider="@color/gray" android:dividerHeight="0.5dp" android:stackFromBottom="true" android:layout_width="wrap_content" android:layout_height="fill_parent"/> </RelativeLayout> </LinearLayout>
3.listviewitemstyle.xml如下,定义了listview的item中含有1个文本和1个图片:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" //此处设置的即为item的背景图,item设置背景图后可实现点击item中任意位置都触发事件 android:background="@drawable/toolbar_bg" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tvitem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/gray" android:gravity="center_vertical" android:paddingLeft="6dip" /> <ImageView android:id="@+id/imgitem" android:contentDescription="@string/app_name" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
-----------------------------------------------------------------------------------------------
小结:
实现该效果的关键是:1..要使用SimpleAdapter,且其要用到item样式辅助文件和List<HashMap<String,Object>>;3.handler解析要正确;4.注意要继承ListActivity。
相关文章推荐
- Android ListActivity的使用和在ListView中添加图片文字
- Android ListActivity的使用和在ListView中添加图片文字
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android ListView 列表分隔,条目中添加分类信息(文字,图片等)
- Android中ListActivity的使用和在ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- Android中ListActivity的使用和在ListView中添加图片文字
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- android学习:在ListView中添加带图片和文字的复杂列表项
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android之 ListActivity 的使用和在 ListView中添加图片文字(ListActivity与Activity的区别)
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- Android ListView从网络获取图片及文字显示
- android中listview中添加多种itemview
- ListView添加图片和文字效果之SimpleAdapter简单实例
- 给Android ListView添加删除item动画
- android ListView常见问题解决方法(滚动背景变黑,去除滑动时阴影,拖动时Item图片不显示)