Android ListView滑动删除
2014-01-03 10:00
316 查看
类似于微信: TestActivity.java
importjava.util.ArrayList;
importjava.util.List;
importandroid.os.Bundle;
importandroid.R.integer;
importandroid.app.Activity;
importandroid.util.DisplayMetrics;
importandroid.view.Menu;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.View.OnTouchListener;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.Button;
importandroid.widget.HorizontalScrollView;
importandroid.widget.LinearLayout;
importandroid.widget.LinearLayout.LayoutParams;
importandroid.widget.ListView;
importandroid.widget.TextView;
publicclassTestActivityextendsActivity
{
ListViewlistView;
List<String>infos=newArrayList<String>();
DisplayMetricsdm;
@Override
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
listView=(ListView)findViewById(R.id.lv);
for(inti=0;i<25;i++)
{
infos.add("info"+i);
}
dm=newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
SwipAdapteradapter=newSwipAdapter();
listView.setAdapter(adapter);
}
classSwipAdapterextendsBaseAdapter
{
@Override
publicintgetCount()
{
//TODOAuto-generatedmethodstub
returninfos.size();
}
@Override
publicCharSequencegetItem(intposition)
{
//TODOAuto-generatedmethodstub
returninfos.get(position);
}
@Override
publiclonggetItemId(intposition)
{
//TODOAuto-generatedmethodstub
returnposition;
}
@Override
publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent)
{
//TODOAuto-generatedmethodstub
finalViewholderholder;
if(convertView==null)
{
convertView=View.inflate(TestActivity.this,R.layout.item,null);
holder=newViewholder();
holder.ll_content=(LinearLayout)convertView.findViewById(R.id.ll_content);
holder.ll_action=(LinearLayout)convertView.findViewById(R.id.ll_action);
holder.tv_content=(TextView)convertView.findViewById(R.id.tv_content);
holder.btn_del=(Button)convertView.findViewById(R.id.btn_del);
holder.hs=(HorizontalScrollView)convertView.findViewById(R.id.hs);
//设置ll_content的宽度为屏幕宽度
LayoutParamsparams=(LayoutParams)holder.ll_content.getLayoutParams();
params.width=dm.widthPixels;
convertView.setTag(holder);
}
else
{
holder=(Viewholder)convertView.getTag();
}
holder.tv_content.setText(getItem(position));
convertView.setOnTouchListener(newOnTouchListener()
{
@Override
publicbooleanonTouch(Viewv,MotionEventevent)
{
switch(event.getAction())
{
caseMotionEvent.ACTION_UP:
intx=holder.hs.getScrollX();
intwidth=holder.ll_action.getWidth();
if(x<width/2)
{
holder.hs.scrollBy(0,0);
}
else
{
holder.hs.smoothScrollBy(width,0);
}
break;
default:
break;
}
returnfalse;
}
});
holder.btn_del.setOnClickListener(newOnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
infos.remove(position);
notifyDataSetChanged();
}
});
//这里防止删除一条item后,ListView处于操作状态,直接还原
if(holder.hs.getScrollX()!=0)
{
holder.hs.scrollTo(0,0);
}
returnconvertView;
}
finalclassViewholder
{
LinearLayoutll_content;
LinearLayoutll_action;
TextViewtv_content;
Buttonbtn_del;
HorizontalScrollViewhs;
}
}
}
布局文件:test.xml
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lv"
/>
</RelativeLayout>
item.xml
<?xmlversion="1.0"encoding="utf-8"?>
<HorizontalScrollViewxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/hs"
android:scrollbars="none"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tv_content"
android:gravity="center"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_action"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_del"
android:text="Delete"
/>
</LinearLayout>
</LinearLayout>
</HorizontalScrollView>
界面:
相关文章推荐
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现ListView左右滑动删除Item效果
- 赵雅智_AndroidUI_listview的item滑动删除效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- [转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- ANDROID 动态添加的listView,仿QQ滑动删除
- Android ListView 左右滑动显示删除
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- [置顶] Android之NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
- Android 结合滑动控件ListView滑动删除
- Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突
- android自定义listview滑动删除
- Android ListView 侧滑效果实现(滑动展开、滑动删除)
- Android 自定义ListView控件,滑动删除