2017-03-21 7 views
0

내 목록보기에 대한 CustomAdapter에 너무 많은 코드가 있다고 생각합니다. CustomAdapter에서 여러 onclicks, db 편집 및 팝업 창 코드를 갖는 것이 일반적입니까?listview를 위해 customadapter에 코드를 너무 많이 넣었습니까?

코드를 목록 뷰가있는 활동 클래스로 이동하는 방법을 살펴 보았지만 불가능하거나 복잡했습니다. 나는 기술적 인 코딩 방법을 따르기가 쉽지 않으므로 많은 경험을 갖고 있지 않습니다.

+0

코드를 보지 않고도 대답하기가 어렵다 ... –

+0

은 코드가 잘 작성된 코드가 아닌 것처럼 보이지만 줄이없는 것 같습니다 ... – snachmsm

+0

단지 함수 일 때 어댑터에 비즈니스 로직을 많이 사용하는 것 같습니다. 데이터를 나타내는 Views를 반환합니다. 제 생각에는 그렇습니다. 너무 많이 넣고 계시군요. 우려 사항을 실천하십시오. – DeeV

답변

0

나는 목록보기를 수용하는 활동 클래스에 코드를 이동하는 방법을 검토 한 결과,하지만 그것은 복잡 할 것이다 유일한 이유는 당신이하고있는 것입니다

불가능하거나 매우 복잡 중 하나입니다 너무 많은 어댑터. 당신이 활동에 코드를 이동하려는 않은 경우

것은, 방법을 사용하면 어댑터가 어떤 주어진 Item 클래스, 인터페이스 예를 들어

을 사용하는 것입니다.

// ... BaseAdapter, ArrayAdapter, RecyclerView.Adapter... Same difference 
public class YourAdapter extends BaseAdapter { 

    public interface OnItemActionListener { 
     void onItemEdited(Item x); 
     void onItemAdded(Item x); 
     void onItemClicked(Item x); 
     // etc. 
    } 

    public OnItemActionListener listener; // should make private with a setter method 

    ... 

     // somewhere in the adapter 
     Item x = getItem(position); 

     if (listener != null) { 
      listener.onItemClicked(item); 
     } 

    ... 

} 

활동이 해당 인터페이스를 구현할 수 있습니다. 이

에 관한

public YourActivity extends Activity 
    implements YourAdapter.OnItemActionListener { 

    @Override 
    public void onItemClicked(Item x) { 
     Log.d("item click", String.valueOf(x)); 
    } 

    @Override 
    public void onItemAdded(Item x) { 
     Log.d("item added", String.valueOf(x)); 
    } 

    @Override 
    protected void onCreate(Bundle b){ 
     super.onCreate(b); 
     setContentView... ; 

     adapter = new YourAdapter... ; 
     adapter.listener = this; // Should use a setter method instead 
    } 

} 

은 보통 여러 onclicks

을하는 것입니다
onClick(View v)에 대한 하나의 인터페이스를 필요로하고 당신은 무엇을보고 어떤 R.id 값과 v.getId()을 확인할 수 있습니다

이 (가) 클릭되었습니다.

+0

은 YourActivity입니다. 1. 목록보기 및 목록보기 어댑터가 포함 된 활동 또는 2. 온라인 작업 처리만을위한 다른 활동 또는 3. 버튼이 거래 편집 페이지로 연결되면 저장하기 위해 전환하려는 활동. –

+0

어댑터가 들어있는 곳이기 때문에 listview를 사용하는 것이 좋습니다. –