0

작성하려고하는 앱에 문제가 있습니다. 지난 며칠간 많은 인터넷 검색을했는데 그걸 알아낼 수 없습니다.3 개의 목록보기 용 사용자 정의 어댑터

목표는 하나의 활동에 대한 확장 가능한 목록보기를 가지며, 총 12 개의 옵션이 있습니다. 이 12 가지 옵션을 클릭하면 사용자가 동일한 레이아웃 (월요일, 수요일, 금요일이라는 3 개의 탭)으로 이동합니다. 각 탭에는 목록보기가 있습니다. 이 모든 지금까지 내 애플 리케이션을 위해 작동합니다. 이제 내 맞춤 어댑터가 확장 가능한 목록보기의 항목에 따라 3 가지 목록 뷰를 다른 데이터로 채 웁니다. (앱에 하드 코드 할 것이고 많은 데이터가 아니라 속도가 느려질 것이라고 생각하지 않아야합니다.) 클릭했습니다.

내가 겪고있는 문제는 확장형 ListView의 어떤 항목을 클릭했는지 사용자 지정 어댑터에 알릴 수 없다는 것이고 그 정보를 가져 오는 방법을 알지 못하고 세 가지 다른 세 가지 다른 세트의 세 가지 다른 탭 목록보기.

데이터는 매우 간단하며 모두 매우 비슷합니다. 각 행에는 3 개의 텍스트 상자가 있으며, 하나는 단어 한 개와 2 개의 숫자를 포함합니다. 또한 체크 박스가 표시됩니다.

이전에 맞춤 어댑터를 만들었지 만 단일 목록보기 용 이었으므로 데이터를 분리 할 필요가 없었으므로 훨씬 쉽습니다. 이걸 어떻게 시작해야할지 모르겠다. 내 인터넷 검색 시도는 비어있다.

어떤 도움을 주셔서 감사합니다. 올바른 방향으로 나를 가르키는 링크조차도 최고 일 것입니다! 감사!

답변

0

(TabLayout + ViewPager) 콤보를 사용하여 3 개의 탭에 대해 3 개의 다른 조각을 만듭니다.
TabLayoutViewPager에 액세스 할 수있는 Activity에서 이것을 호출 한 다음 사용자 지정 listviews를 사용하여 탭을 동적으로 추가하십시오. 간단한 솔루션을 제공합니다.

0

동일한 CustomAdapter을 사용하여 원하는 데이터를 채울 수 있습니다. 따라서 CustomAdapter의 데이터를 하드 코딩하는 대신 오브젝트를 생성하는 동안 데이터를 동적으로 설정할 수 있습니다.

이렇게하면 Adapter을 만들 때 처리해야하는 데이터를 전달합니다. 귀하의 액티비티는 클릭 한 확장 가능한 목록 항목을 알고 있으므로 어댑터에 다른 데이터를 보낼 수 있습니다.

public class MainActivity extends Activity { 

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

     .... 

     ListView listView = (ListView) findViewById(R.id.ID_OF_LISTVIEW); 
     MyCustomAdapter listViewAdapter; 
     if(/* CONDITION 1 */) { 
      listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 1", "Data2 for Condition 1", "Data3 for Condition 1"}) 
     } else if (/* CONDITION 2 */) { 
      listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 2", "Data2 for Condition 2"}) 
     } else { 
      listViewAdapter = new MyCustomAdapter(new String[] {"Data1 for Condition 3"}) 
     } 

     listView.setAdapter(listViewAdapter); 

     ....    
    } 

} 
: 어댑터를 만들 때

public class MyCustomAdapter extends BaseAdapter { 
    private String [] dataToBePopulated; 

    public MyCustomAdapter(String [] data) { 
     dataToBePopulated = data; 
    } 

    @Override 
    public int getCount() { 
     return dataToBePopulated != null ? dataToBePopulated.lenght : 0; 
    } 

    // ETC.. 
} 

그런 다음, 당신은 당신이 좋아 원하는 데이터를 전송할 수 있습니다