Android编程实现带有图标的ListView并带有长按菜单效果示例

本文实例讲述了Android编程实现带有图标的ListView并带有长按菜单效果。分享给大家供大家参考,具体如下:

MainActivity.Java

package com.zxl; import java.util.ArrayList; import java.util.List; import org.w3c.dom.ls.LSException; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Toast; public class MainActivity extends Activity implements OnItemClickListener { /** Called when the activity is first created. */ ListView lv; List<ListViewItem> items; CustomListViewAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lv=(ListView)findViewById(R.id.listView1); items=new ArrayList<MainActivity.ListViewItem>(); items.add(new ListViewItem(){{ ThumbnailResource=R.drawable.ic_launcher; title="Item1"; SubTitle="Item1 Description"; }}); items.add(new ListViewItem(){{ ThumbnailResource=R.drawable.ic_launcher; title="Item2"; SubTitle="Item2 Description"; }}); items.add(new ListViewItem(){{ ThumbnailResource=R.drawable.ic_launcher; title="Item3"; SubTitle="Item3 Description"; }}); items.add(new ListViewItem(){{ ThumbnailResource=R.drawable.ic_launcher; title="Item4"; SubTitle="Item4 Description"; }}); adapter=new CustomListViewAdapter(this, items); lv.setAdapter(adapter); registerForContextMenu(lv); lv.setOnItemClickListener(this); } class ListViewItem{ public int ThumbnailResource; public String title; public String SubTitle; } public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub /* ListViewItem item=items.get(position); //删除 items.remove(item); adapter=new CustomListViewAdapter(this, items); lv.setAdapter(adapter);*/ ListViewItem item=items.get(position); Toast.makeText(MainActivity.this, "this is :"+item, Toast.LENGTH_LONG).show(); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.add("add"); menu.add("update"); menu.add("delete"); } @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub super.onContextItemSelected(item); if(item.getTitle()=="add"){ Toast.makeText(MainActivity.this, "add", Toast.LENGTH_LONG).show(); items.add(new ListViewItem(){{ ThumbnailResource=R.drawable.ic_launcher; title="Item new"; SubTitle="Item new Description"; }}); adapter=new CustomListViewAdapter(this, items); lv.setAdapter(adapter); } else if(item.getTitle()=="update"){ //do somthing } else if(item.getTitle()=="delete"){ ContextMenuInfo info = item.getMenuInfo(); AdapterView.AdapterContextMenuInfo contextMenuInfo = (AdapterContextMenuInfo) info; // 获取选中行位置 int position = contextMenuInfo.position; ListViewItem itema=items.get(position); items.remove(itema); adapter=new CustomListViewAdapter(this, items); lv.setAdapter(adapter); } return true; } }

CustomListViewAdapter.java

package com.zxl; import java.util.List; import com.zxl.MainActivity.ListViewItem; import android.app.Activity; 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.ListView; import android.widget.TextView; public class CustomListViewAdapter extends BaseAdapter { LayoutInflater inflater; List<ListViewItem> items; public CustomListViewAdapter(Activity context, List<ListViewItem> items) { super(); this.items = items; this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount() { // TODO Auto-generated method stub return items.size(); } public Object getItem(int position) { // TODO Auto-generated method stub return null; } public long getItemId(int position) { // TODO Auto-generated method stub return 0; } public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub //items ListViewItem item=items.get(position); View vi=convertView; if(convertView==null) vi = inflater.inflate(R.layout.item_row, null); ImageView imgThumbnail=(ImageView) vi.findViewById(R.id.imgThumbnail); TextView txtTitle =(TextView) vi.findViewById(R.id.txtTitle); TextView txtSubTitle=(TextView) vi.findViewById(R.id.txtSubTitle); imgThumbnail.setImageResource(item.ThumbnailResource); txtTitle.setText(item.title); txtSubTitle.setText(item.SubTitle); return vi; } }

main.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView1" android:layout_alignParentTop="true" > </ListView> </RelativeLayout>

item_row.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:padding="5dip"> <ImageView android:layout_width="78dip" android:layout_height="78dip" android:id="@+id/imgThumbnail" android:layout_alignParentLeft="true" android:layout_centerInParent="true" android:layout_marginLeft="-3dip" android:scaleType="centerInside"> </ImageView> <TextView android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:text="TextView" android:layout_width="wrap_content" android:id="@+id/txtTitle" android:layout_toRightOf="@+id/imgThumbnail" android:layout_marginTop="6dip" android:layout_marginLeft="6dip"> </TextView> <TextView android:layout_height="wrap_content" android:text="TextView" android:layout_width="wrap_content" android:id="@+id/txtSubTitle" android:layout_toRightOf="@+id/imgThumbnail" android:layout_below="@+id/txtTitle" android:layout_marginTop="3dip" android:layout_marginLeft="6dip"> </TextView> </RelativeLayout>

文件结构:

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-10-26 15:46:56

Android编程实现带有图标的ListView并带有长按菜单效果示例的相关文章

Android编程实现分页加载ListView功能示例

本文实例讲述了Android编程实现分页加载ListView功能.分享给大家供大家参考,具体如下: package eoe.listview; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import andr

Android编程调用系统自带的拍照功能并返回JPG文件示例【附demo源码下载】

本文实例讲述了Android编程调用系统自带的拍照功能返回JPG文件.分享给大家供大家参考,具体如下: package com.eboy.testcamera1; import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bund

Android实现动态向Gallery中添加图片及倒影与3D效果示例_Android

本文实例讲述了Android实现动态向Gallery中添加图片及倒影与3D效果的方法.分享给大家供大家参考,具体如下: 在Android中gallery可以提供一个很好的显示图片的方式,实现上面的效果以及动态添加数据库或者网络上下载下来的图片资源.我们首先实现一个自定义的Gallery类. MyGallery.java: package nate.android.Service; import android.content.Context; import android.graphics.Ca

Android实现动态向Gallery中添加图片及倒影与3D效果示例

本文实例讲述了Android实现动态向Gallery中添加图片及倒影与3D效果的方法.分享给大家供大家参考,具体如下: 在Android中gallery可以提供一个很好的显示图片的方式,实现上面的效果以及动态添加数据库或者网络上下载下来的图片资源.我们首先实现一个自定义的Gallery类. MyGallery.java: package nate.android.Service; import android.content.Context; import android.graphics.Ca

【Android开发】范例2-实现带图标的ListView

效果如图: 实现代码: 首先编写res/layout/main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="w

Android仿微信滑动弹出编辑、删除菜单效果、增加下拉刷新功能_Android

如何为不同的list item呈现不同的菜单,本文实例就为大家介绍了Android仿微信或QQ滑动弹出编辑.删除菜单效果.增加下拉刷新等功能的实现,分享给大家供大家参考,具体内容如下 效果图: 1. 下载开源项目,并将其中的liberary导入到自己的项目中: 2. 使用SwipeMenuListView代替ListView,在页面中布局: <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefresh

Android编程实现ListView头部ViewPager广告轮询图效果_Android

本文实例讲述了Android编程实现ListView头部ViewPager广告轮询图效果.分享给大家供大家参考,具体如下: 之前看了别人的一些软件,发现其广告图轮询的时候,那个广告感觉和ViewPager的效果不太一样,后来也查了一下,是因为时间问题,找了一些资料,自己也实践一下. 1.为了解决ListView头部加ViewPager滑动冲突问题,必须自定义ListView,重写里面的onInterceptTouchEvent方法,ListView代码如下: package com.exampl

Android实现带有边框的ListView和item的方法_Android

本文实例讲述了Android实现带有边框的ListView和item的方法.分享给大家供大家参考,具体如下: 想为ListView和item四周添加边框有两种方法: 1.贴一张带有边框效果的背景图 2.自定义Draw的方法 第一种方法较第二种方法更耗系统资源,但是用法简单,只需要一张图设置为相应控件的背景即可,而第二种灵活性好些. 这次是实现带有边框的ListView和item,为此写个简单Demo 学习学习 先看下Demo运行效果吧 下面是主要代码,主要是用到Canvas.drawLine(.

Android实现带有边框的ListView和item的方法

本文实例讲述了Android实现带有边框的ListView和item的方法.分享给大家供大家参考,具体如下: 想为ListView和item四周添加边框有两种方法: 1.贴一张带有边框效果的背景图 2.自定义Draw的方法 第一种方法较第二种方法更耗系统资源,但是用法简单,只需要一张图设置为相应控件的背景即可,而第二种灵活性好些. 这次是实现带有边框的ListView和item,为此写个简单Demo 学习学习 先看下Demo运行效果吧 下面是主要代码,主要是用到Canvas.drawLine(.