나는이 GridView
나는 이름의 목록을 채우는 싶습니다, 나는이 목록을 필요로하는 각각의 셀은 동적으로 변경 가능합니다. 이 아이디어를 다음과 같이 구현해 보았습니다.
public void fillBoard(int groupSize){
int numGroups = listPresentMembers.size()/groupSize;
ListView [] groups = new ListView [numGroups];
for(int i=0;i<numGroups;i++){
String [] items = new String[groupSize];
for(int j=0;j<groupSize;j++){
items[j] = listPresentMembers.get(i*groupSize + j);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,android.R.id.text1,items);
groups[i] = new ListView(this);
groups[i].setAdapter(adapter);
}
ArrayAdapter<ListView> groupsAdapter = new ArrayAdapter<ListView>(this,
android.R.layout.simple_list_item_1,android.R.id.text1,groups);
gridViewBoard.setAdapter(groupsAdapter);
}
본질적인 아이디어는 내가 ArrayAdapter
유형 ListView
의 특정 셀을 채우고 싶은 이름 그룹 중 하나에 의해 정의되는 각 항목을 만드는 것 GridView
입니다. 그런 다음 이것을 ArrayAdapter
내 GridView
.
문제는 앱을 실행할 때의 요소가 GridView
"android.widget.ListView@41bcfa60"과 같은 문자열이라는 것입니다. 내가 어디로 잘못 갔습니까?
매우 감사합니다!
짧은 대답 : "android.widget.ListView@41bcfa60"과 같은 것을 볼 때마다 코드의 무언가가 String을 예상하고 있으며 대신 객체 (이 경우 ListView)를 제공했음을 의미합니다.
그래서 무슨 일이 있었나요? GridView 용 어댑터를 살펴보십시오.
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,android.R.id.text1,items);
사용중인 ArrayAdapter의 생성자는 다음과 같습니다.
public ArrayAdapter (컨텍스트 컨텍스트, int 리소스, int textViewResourceId, T [] 객체)
매개 변수
context
현재 컨텍스트입니다.
resource
보기를 인스턴스화 할 때 사용할 레이아웃이 포함 된 레이아웃 파일의 리소스 ID입니다.
textViewResourceId
채울 레이아웃 리소스 내의 TextView ID
objects
ListView에서 나타낼 개체입니다.
으로 전달 android.R.layout.simple_list_item_1
합니다. 즉 resource
, 사용중인 레이아웃입니다. 이 레이아웃은 한 줄의 텍스트 인 단일 TextView로 구성됩니다. ListView를 보유하도록 설계되지 않았습니다.
이 레이아웃이 TextView (the textViewResourceId
) 를 채우려 items
고 할 때 전달한 배열 ( ) 의 적절한 요소 를보고 텍스트를 가져 오려고 시도합니다. Java에서는 객체에 대해 toString ()을 호출하여이를 수행합니다. . toString ()이 구현되지 않은 경우 기본적으로 "android.widget.ListView@41bcfa60"횡설수설과 같은 것을 반환합니다.
그렇기 때문에 코드에 더 큰 문제가 있다고 생각합니다. 내가 당신이라면 각 그리드 항목이 ListView 인 GridView를 포함하는 디자인을 강력히 재고 할 것입니다. 그것은 전혀 관습 적이 지 않기 때문에 당신이하려는 일을 성취하는 더 좋은 방법이있을 것입니다. 목표를 설명하고 코드 디자인 도움을 요청하는 다른 질문을 게시 해보십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다