1

스 와이프 목록보기를 https://github.com/47deg/android-swipelistview으로 설정했습니다. 스 와이프 관련 이벤트를 처리 할 수있는 다양한 이벤트 리스너를 제공합니다.android listview 배경이 스 와이프에서 변경되지 않습니다.

모든 것이 한 가지를 제외하고는 완벽하게 작동합니다.

스 와이프 된 목록 항목의 배경색 만 변경하고 싶습니다. 일단 돌아 오면 되돌아갑니다.

enter image description here

나는 어댑터에서 이벤트와 함께이 작업을 수행 할 수 있습니다. 목록 어댑터를 사용하여이 작업을 수행 할 수는 있지만 배경을 변경하려면 왼쪽으로 스 와이프하여 (수신기) 만 사용하면 어댑터를 사용할 수 없습니다. 따라서 어댑터에서이 작업을 수행하지 못할 수도 있습니다.

에 따라 청취자 나를 위해 작동 -

swipeListView.setSwipeListViewListener(new BaseSwipeListViewListener() { 
    @Override 
    public void onOpened(int position, boolean toRight) {  
     View v = swipeListView.getChildAt(position); 
     swipeListView.getChildAt(position).setBackgroundColor(Color.CYAN); 

     ci = u_items.get(position); // getter of list item data 

     Toast.makeText(getApplicationContext(), ci.getTitle().toString(), Toast.LENGTH_SHORT).show(); 

    } 

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

    @Override 
    public void onListChanged() { 
    } 

    . // other listeners 
    . 
    . 
    . 
    . 
    . 

이것은 오류 또는 경고가 발생하지 않습니다하지만 난 배경이 변경되는 것을 볼 수 없습니다. 토스트이 나타나지 않으므로 스 와이프 왼쪽 수신기이 실제로 작동 중입니다.

아마도 배경 자체를 설정하는 중에 뭔가 잘못하고 있습니다. 확실하지. 이후, swipelistview은 확장되는 사용자 정의보기입니다 ListView 그 수신기에서만이 작업을 수행하는 방법을 상상할 수 없습니다.

XML 파일에서 배경색을 설정하기 위해 안드로이드 목록 선택을 사용할 수도 있지만 탭 수신기 만 사용할 수 있습니다. 그래서이 옵션도 제거됩니다. 그 외 모든 것은 완벽하게 작동합니다.

올바른 방향으로 밀면 좋을 것입니다. 분석 할 코드가 더 필요하면 질문을 편집 할 수 있습니다.

+0

또한 설정에 u는이 링크 https://github.com/47deg/android-swipelistview에있는 코드를 시도했지만 – AndroidDev

답변

0

v를 이미 정의 했으므로 더 쉽게 사용할 수 있습니다.

View v = swipeListView.getChildAt(position); 
v.setBackgroundColor(Color.CYAN); 
+0

예를 진행하는 곳에서 잘 모릅니다. 필자는'View v ... '를 제거 할 것이므로 불필요하다고 생각했습니다. 그러나 그것도 작동하지 않습니다. – Gimali

+0

this.getchildxxx –

+0

swipeListView를 'this'가 * swipeListVIew * inside listener를 가리 키지 않습니다. – Gimali

0

배경보기를 얻고 변경하는 방법으로이 작업을 수행 할 수있었습니다. onOpen 메서드 대신 onStartOpen 메서드를 사용했습니다.

@Override 
public void onStartOpen(int position, int action, boolean right) { 
    View v = mSwipeListView.getChildAt(position); 
     if (v == null) return; 

     if (right) { // nothing 

     } else { 
      final ImageView mCurrImage = (ImageView) v.findViewById(R.id.myImageView); 
      mCurrShareImage.setBackground(Color.CYAN); 
     } 
    } 
} 
+0

이 방법을 구현해야하는 곳은 어디입니까? – Hossein

+0

onStartOpen은 BaseSwipeListViewListener의 메소드입니다. 제 경우에는 SwipeListView를 사용하는 부분에서 구현됩니다. mSwipeListView.setSwipeListViewListener (새 BaseSwipeListViewListener() { ... @Override 공공 무효 onStartOpen (INT 위치, INT 액션, 부울 오른쪽) { –