2013-11-21 1 views
2

SwipeListView가 잘 작동하지만 때때로 "swipeFrontView"에서 해당 위치를 클릭하면 "swipeBackView"항목을 클릭해야하는 문제가 있습니다. 제발 도와 주셔서 감사합니다. 다음과 같이 내 XML 코드는 다음과 같습니다안드로이드 : SwipeListView 클릭

activity_home.xml :

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#ffffff" > 

    <com.fortysevendeg.android.swipelistview.SwipeListView 
     xmlns:swipe="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/lstRequests" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#ffffff" 
     android:listSelector="#00000000" 
     swipe:swipeBackView="@+id/back" 
     swipe:swipeCloseAllItemsWhenMoveList="true" 
     swipe:swipeDrawableChecked="@drawable/choice_selected" 
     swipe:swipeDrawableUnchecked="@drawable/choice_unselected" 
     swipe:swipeFrontView="@+id/front" 
     swipe:swipeMode="left" > 
    </com.fortysevendeg.android.swipelistview.SwipeListView 

</RelativeLayout> 

package_row.xml :

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

<RelativeLayout 
     android:id="@+id/back"    <=== 
     style="@style/ListBackContent" 
     android:layout_width="wrap_content" 
     android:layout_height="110dp" 
     android:tag="back" > 

    <LinearLayout 
     android:id="@+id/backshowportion" 
     style="@style/ListBackContent" 
     android:layout_width="250dp" 
     android:layout_height="110dp" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:background="@drawable/bg" 
     android:gravity="right|center" > 

     <TextView 
      ..... /> 

     <TextView 
      ..... /> 

     <TextView 
      ...../> 

    </LinearLayout> 

</RelativeLayout> 

<RelativeLayout 
     android:id="@+id/front"   <=== 
     style="@style/ListFrontContent" 
     android:layout_width="match_parent" 
     android:layout_height="110dp" 
     android:orientation="vertical" 
     android:tag="front" > 

     <TextView 
      ..... /> 

     <TextView 
      ..... /> 

     <TextView 
      ..... /> 

     <TextView 
      ..... /> 


</RelativeLayout> 

</FrameLayout> 

하고 다음과 같이 클래스 코드의 일부는 다음과 같습니다

protected void onCreate(Bundle savedInstanceState) 
{ 
swipeListView=(SwipeListView)findViewById(R.id.lstRequests); 
if (Build.VERSION.SDK_INT >= 11) 
{ 
    swipeListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
} 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
{ 
    swipeListView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() 
    { 
     @Override 
     public void onItemCheckedStateChanged(ActionMode mode, int position,long id, boolean checked) 
     { 
      mode.setTitle("Selected (" + swipeListView.getCountSelected() + ")");     
     } 
     @Override 
     public void onDestroyActionMode(ActionMode mode) 
     { 
      swipeListView.unselectedChoiceStates(); 
     } 
     @Override 
     public boolean onActionItemClicked(ActionMode mode,MenuItem item) 
     { 
      return false; 
     } 
     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) 
     { 
      return false; 
     } 
     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) 
     { 
      return false; 
     } 
    }); 
} 
} 
public void onStart() 
{ 
super.onStart();   
listner(); 
} 
private void listner() 
{ 
swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() 
{   
     @Override 
     public void onStartOpen(int position, int action, boolean right) 
     { 
      Log.d("swipe", String.format("onStartOpen %d - action %d", position, action)); 
     } 

     @Override 
     public void onStartClose(int position, boolean right) 
     { 
      Log.d("swipe", String.format("onStartClose %d", position));     
     } 

     @Override 
     public void onOpened(int position, boolean toRight) 
     { 

     } 

     @Override 
     public void onMove(int position, float x) 
     { 

     } 

     @Override 
     public void onListChanged() 
     { 

     } 

     @Override 
     public void onLastListItem() 
     { 

     } 

     @Override 
     public void onFirstListItem() 
     { 

     } 

     @Override 
     public void onDismiss(int[] reverseSortedPositions) 
     { 

     } 

     @Override   
     public void onClosed(int position, boolean fromRight) 
     { 

     } 

     @Override 
     public void onClickFrontView(int position) 
     { 
      Log.d("swipe", String.format("onClickFrontView %d", position)); 
      swipeListView.openAnimate(position); 
     } 

     @Override 
     public void onClickBackView(int position) 
     { 
      Log.d("swipe", String.format("onClickBackView %d", position)); 
      swipeListView.closeAnimate(position); 
     } 

     @Override 
     public void onChoiceStarted() 
     { 

     } 

     @Override 
     public void onChoiceEnded() 
     { 

     } 

     @Override 
     public void onChoiceChanged(int arg0, boolean arg1) 
     { 

     } 

     @Override 
     public int onChangeSwipeMode(int arg0) 
     { 
      return 0; 
     } 
    }); 
+0

레이아웃 파일 코드가 필요하지 않습니다. 제발 또한 자바 파일 코드를 게시하십시오. – GrIsHu

+0

코드 세그먼트가 추가되었습니다. – shfshrf

답변

5

다음과 같이 RlativeLayout을 클릭 가능하게 만들어 package_row.xml의 FrontView를 수정했습니다. 지금 제대로 작동하고 있습니다.

<RelativeLayout 
    android:id="@+id/front" 
    style="@style/ListFrontContent" 
    android:layout_width="match_parent" 
    android:layout_height="110dp" 
    android:orientation="vertical" 
    android:clickable="true" 
    android:tag="front" > 
+0

위대한! 고마워. 나는 똑같은 문제가 있었다! –

관련 문제