안드로이드 API 레벨 8 GridView의 행 수를 얻는 방법이 있습니까?GridView의 행 수를 얻는 방법은 무엇입니까?
답변
나는이 어젯밤을 해결해야했고 그것은 나를 위해 일했습니다. 아이의 폭을 검색해, 모든 셀이 같은 폭을 가지면 (자), GridView의 폭을 아이의 폭으로 나눕니다. (getColumnWidth()
도 이전 API에서는 사용할 수 없으므로 해결 방법이 있습니다.)
private int getNumColumnsCompat() {
if (Build.VERSION.SDK_INT >= 11) {
return getNumColumnsCompat11();
} else {
int columns = 0;
int children = getChildCount();
if (children > 0) {
int width = getChildAt(0).getMeasuredWidth();
if (width > 0) {
columns = getWidth()/width;
}
}
return columns > 0 ? columns : AUTO_FIT;
}
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private int getNumColumnsCompat11() {
return getNumColumns();
}
그러나 여기에는 몇 가지 중요한 제한 사항이 있습니다.
- GridView가 배치 된 후 실제로보기가 추가 된 경우에만 작동합니다.
- 여기에는
setHorizontalSpacing()
으로 추가 된 셀 간격이 고려되지 않습니다. 수평 간격을 사용하는 경우이를 고려하여이 간격을 조정해야 할 수도 있습니다. - 필자의 경우에는 패딩이나 추가 너비를 고려하지 않았습니다. 그렇게한다면 분열이 옳은 답으로 끝나기 위해서는이 부분을 조정해야합니다.
당신은 안드로이드 API 가이드에서 GridView 페이지를 보는 경우에, 당신은 매개 변수 중 하나가 위치입니다 onItemClickListener
라는 방법이있다 볼 수 있습니다. getNumColumns()
과 함께 행 수를 얻을 수 있습니다.
나는 열 수는 정수 자원을 선언하고 사용하여, 자원에 지정된 경우, V8에서 getNumColumns의 부족을 해결 그의 GridView 자원 및 코드 .
<integer name="num_grid_columns">2</integer>
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
app:columnCount="@integer/num_grid_columns"
app:orientation="horizontal" >
int cols = getResources().getInteger(R.integer.num_grid_columns);
처음에는 duplicate question으로 대답했기 때문에 여기에 중복 답변을 추가하십시오.
이 구현을 내 Custom GridView 하위 클래스에 추가했으며 예상대로 작동했습니다. GridView 클래스의 선언 된 필드를 확인하고 최소한 API 8에서는 이미 mNumColumns
(API 18에서 반환되는 것은 getNumColumns()
)이라는 필드가 있습니다. 그들은 아마도 필드 이름을 다른 것으로 변경 한 다음 API 8과 18 사이로 돌아 가지 않았지만 아직 확인하지 않았습니다.
@Override
public int getNumColumns() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
return super.getNumColumns();
} else {
try {
Field numColumns = getClass().getSuperclass().getDeclaredField("mNumColumns");
numColumns.setAccessible(true);
return numColumns.getInt(this);
} catch (Exception e) {
return 1;
}
}
}
@Override는 안전 점검 주석 AFAIK이므로 오류가 발생하지 않습니다.
별도의 getNumColumnsCompat()
메서드 (@cottonBallPaws 응답과 같은) 대신에 이렇게하는 카운터 권장 사항이 있는지는 알 수 없지만이 방법은 매우 정교합니다.
감사합니다. 그것은 나를 위해 workd입니다. – tungdx
- 1. Gridview의 선택된 행 위치를 찾는 방법은 무엇입니까?
- 2. UITableView에서 행 수를 얻는 방법
- 3. 과거에없는 행 수를 얻는 방법
- 4. NpgsqlDataReader에서 행 수를 얻는 방법
- 5. 데이터베이스에서 뷰에 대한 행 수를 얻는 방법은 무엇입니까?
- 6. C#에서 파일의 행 수를 얻는 방법은 무엇입니까?
- 7. SELECT 문에서 선택된 행 수를 얻는 방법은 무엇입니까?
- 8. null이 아닌 JTable의 행 수를 얻는 방법은 무엇입니까?
- 9. Advantage PHP Extension을 사용하여 행 수를 얻는 방법은 무엇입니까?
- 10. VB.net을 사용하여 Excel 파일의 정확한 행 수를 얻는 방법은 무엇입니까?
- 11. C#에서 표의 행 및 열 수를 얻는 방법은 무엇입니까?
- 12. SELECT 문과 JOIN에 FMDB를 사용하여 행 수를 얻는 방법은 무엇입니까?
- 13. 확장 gridview의 행
- 14. 총 행 수를 얻는 방법과 GridView의 DataSource 속성이 DataBound 이벤트 처리기에서 null 인 이유는 무엇입니까?
- 15. gridview의 행 편집
- 16. sqlalchemy에서 영향을받은 행 수를 얻는 방법?
- 17. C++ 프로젝트의 행 수를 계산하는 방법은 무엇입니까?
- 18. mysql 쿼리에서 행 수를 계산하는 방법은 무엇입니까?
- 19. PHP 파일의 행 수를 계산하는 방법은 무엇입니까?
- 20. 데이터베이스의 행 수를 자동으로 제한하는 방법은 무엇입니까?
- 21. MySqlDataReader에서 행 수를 계산하는 방법은 무엇입니까?
- 22. jquery로 행 수를 전환하는 방법은 무엇입니까?
- 23. 공유 목록의 행 수를 제한하는 방법은 무엇입니까?
- 24. 행 수를 계산하고 그 수를 표시하는 방법은 무엇입니까?
- 25. jqGrid에 대한 행 수를 얻는 방법?
- 26. swt.table에서 전체 행 수를 얻는 방법
- 27. PDO Prepare Statement에서 행 수를 얻는 방법?
- 28. Zend_Db : 테이블에서 행 수를 얻는 방법?
- 29. iPhone 앱의 UITableView - 행 수를 얻는 방법
- 30. 특정 조건에 대한 행 수를 얻는 방법
감사합니다. getNumColumns()를 API 레벨 8에 사용할 수 없습니다. – Hong