많은 예제와 튜토리얼에서 gridView와 어댑터를 사용하는 방법은 Adapter에서 gridView에있는 항목의 이름 목록과 같은 일부 목록을 구현하는 경우입니다.안드로이드 어댑터에서 gridView - 버튼 목록 이름 대신 버튼 목록
Adapter에서 getView 메소드를 대체합니다. 그런 다음 gridView에서 항목을 팽창시킵니다.
공용 클래스 TileAdapter이
private Context context;
private Tile[] tiles;
public TileAdapter(Context context, Tile[] tiles){
this.context = context;
this.tiles= tiles;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if(convertView == null){
gridView = new View(context);
gridView = inflater.inflate(R.layout.layout_tile, null);
TextView textView = (TextView) gridView.findViewById(R.id.tile_title);
textView.setText(tiles[position].getTitle());
}else{
gridView = (View) convertView;
}
return gridView;
}
모든 것이 잘 작동한다 {BaseAdapter를 확장 : 다음 우리가 우리의 목록에서 [위치] 여기
을 텍스트로 텍스트를 변경하는 코드의 예입니다. 하지만 목록에서 항목을 만들어야하는 경우에는 어떻게해야합니까?
List<Button> buttons
다른 클래스에서 사용하는 버튼이있는 곳을 가정 해 보겠습니다. GridView 어댑터는이 목록에서 "MainClass"를 가져옵니다.
어댑터에서 getView()
을 코딩하는 방법은이 목록에서 버튼을 항목으로 설정 하시겠습니까? 새 Button을 만들지 않고 새 Button의 레이블이 목록과 동일하지만 gridView에 넣으려는 경우이 버튼을 목록에서 가져 오는 것입니다!
그래서이 같은 게 필요합니까? 그 생각을 아십니까?
필드를 내 버튼을
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
view= new View(context);
view= inflater.inflate(R.layout.field_layout, null);
//This is bad - but You know what i want?
Field field = (Field) view.findViewById(R.id.field);
field = fields.get(position);
}else{
view= (View) convertView;
}
return view;
}
. 이보기는 무엇이며 목록에서이 버튼을 팽창시키는 방법은 무엇입니까? –
'inflater.inflate (R.layout.field_layout, null);에서했던 것처럼 뷰를 팽창시킬 수 있습니다. 액티비티에서 뷰를 팽창시켜 어댑터 나 어댑터 생성자로 전달할 수 있습니다. 계속하기 전에이 내용을 읽어야합니다. http://www.vogella.com/tutorials/AndroidCustomViews/article.html –
감사합니다. 나는 이것을 읽을 것이기 시작할 것이다. –