Android 将边距设置为listview项,不影响整个listview的边距

Android 将边距设置为listview项,不影响整个listview的边距,android,listview,adapter,margin,swipe,Android,Listview,Adapter,Margin,Swipe,我想设置特定listview项目的左边距,但当我尝试更改它时,listview的整个边距都会更改。我想通过改变特定视图的边距来实现视图的向左滑动和删除(比如第一个,请参见img1)。下面你可以找到一些代码 /*custom adapter*/ @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { Layo

我想设置特定listview项目的左边距,但当我尝试更改它时,listview的整个边距都会更改。我想通过改变特定视图的边距来实现视图的向左滑动和删除(比如第一个,请参见img1)。下面你可以找到一些代码

/*custom adapter*/

 @Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) myContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        convertView = infalInflater.inflate(R.layout.summary_list_item1, null);
        convertView.setTag(position);

        TextView tt1 = (TextView) convertView.findViewById(R.id.listText);

        tt1.setText(myItems.get(position));
        }

        return convertView;
}

/*带有ListView的布局*/

/*summary\u list\u item1.xml*/
在我选择移动第一个之前,初始布局如下所示

但我得到的是所有需要移动的视图…不仅仅是“感动”的视图。。。
有一点猜测:我想调用
(LinearLayout.MarginLayoutParams)v.getLayoutParams()返回所有项目的通用布局参数。您可能需要为“正在运行”的项目创建单个变量。

基本上,您希望实现的是轻扫以消除效果

最好将ListView更改为RecyclerView。 阅读答案如何达到这种效果:

 /*onTouchListener*/       
 lv.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            Log.i("onTouch", "Down");
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    historicX = event.getX();
                    historicY = event.getY();
                    /*keep view first time that is touched*/
                    if (removeView == null) {
                        removeView = v;
                    }
                    break;

                case MotionEvent.ACTION_MOVE:
                    performSlideViewEffect(v, historicX, historicY, event.getX(), event.getY());

                    historicX = event.getX();
                    historicY = event.getY();
                    break;
            }
  }
 public void performSlideViewEffect(View v,float historicX,float historicy,float x,float y) {

    TextView tt1 = (TextView) v.findViewById(R.id.listText);

    LinearLayout.MarginLayoutParams lp = (LinearLayout.MarginLayoutParams) v.getLayoutParams();

    lp.setMarginStart(lp.leftMargin - Math.round(historicX - x));
    v.setLayoutParams(lp);
    v.invalidate();
}
/*Layout with the ListView*/

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#f4f4f4"
android:scrollbars="vertical">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="50sp"
    android:layout_gravity="center_horizontal"
    android:id="@+id/table"
    android:padding="10sp"
    android:textSize="20sp"
    android:text=""
    android:textStyle="bold|italic"/>

<TextView
    android:layout_width="fill_parent"
    android:layout_height="3sp"
    android:background="#EFEFEF"
    android:layout_margin="2sp" />

<ListView
    android:id="@+id/summary_list"
    android:layout_height="wrap_content"
    android:layout_width="280sp"
    android:background="#E7E7E7"
    android:layout_marginTop="5sp"
    android:layout_gravity="center_horizontal"
    android:scrollbars="vertical">
</ListView>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/submit_order"
    android:text="@string/SubmitOrder"
    android:layout_gravity="center_horizontal"/>
/*summary_list_item1.xml*/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
    android:id="@+id/listText"
    android:tag=""
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="14sp"
    android:textColor="#ffffff"
    android:layout_marginTop="2sp"
    android:layout_marginBottom="1sp"
    android:layout_marginLeft="3sp"
    android:layout_marginRight="3sp"
    android:padding="15sp"
    android:background="#000000"
    android:layout_gravity="center_vertical|center_horizontal" />
</LinearLayout>