Android에 두 열 목록보기를 표시하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
다음을 보여주는 그리드보기를 보여주는 Android 응용 프로그램이 있습니다.
1
2
3
4
GridView gridview=(GridView)findViewById(R.id.GridView_test);
DataBaseHelper dbhelper=new DataBaseHelper(this);
ArrayList<String> test=new ArrayList<String>(5);
backlinksadapter.add("1");
backlinksadapter.add("2");
backlinksadapter.add("3");
backlinksadapter.add("4");
ArrayAdapter mAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, test);
gridview.setAdapter(mAdapter);
지금은 작동하지만 그리드의 Foreach 라인을 표시하고 싶습니다. 2 차원 배열 값이있는 2 개의 열 (ASP.NET의 GridView- DataSource -).
보여주고 싶습니다 :
1 | 사람 1
2 | 사람 2
3 | 사람 3
4 | 사람 4
아이디어가 있습니까?
해결책
그리드 뷰 여야합니까? ListView가 작동합니까?
각 행에 두 항목을 표시하는 ListView 및 ListActivity를 썼습니다. SDK를 제공 한 Simple_List_ITEM_2.XML 레이아웃으로 시작했지만 행당 두 항목을 나열하지만 다른 하나는 작은 글꼴을 사용하여 두 번째 줄 (2 줄) 위에 놓습니다. 내가 원했던 것은 둘 다 같은 줄에있는 항목, 오른쪽과 왼쪽에있는 것입니다.
먼저 simple_list_item_2.xml을 새 이름으로 프로젝트의 RES/레이아웃 디렉토리에 복사하고 속성 Android : "twoline"을 "oneline"으로 변경하면서도 뷰 요소 이름을 "twolinelistitem"으로 유지했습니다. 그런 다음 두 개의 내부 요소를 내가 원하는 것을 한 것과 교체했습니다.
목록을 초기화하기 위해 코드에서 MatrixCursor를 만들어 원하는 데이터로 채웠습니다. 두 개의 항목을 지원하기 위해 MatrixCursor의 각 행에는 3 개의 열이 필요합니다. 하나는 기본 키, "_id", 다른 두 열은 내가 표시하려는 항목입니다. 그런 다음 SimplecursOradapter를 사용하여 ListView를 채우고 제어 할 수있었습니다.
내 레이아웃 XML 파일 :
<?xml version="1.0" encoding="utf-8"?>
<TwoLineListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="2dip"
android:paddingBottom="2dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:mode="oneLine"
>
<TextView
android:id="@android:id/text1"
android:gravity="left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
<TextView
android:id="@android:id/text2"
android:gravity="right"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:layout_marginRight="6dip"
android:layout_toRightOf="@android:id/text1"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/MainFontColor"
/>
</TwoLineListItem>
"왼쪽"및 "오른쪽"안드로이드 : 중력 값을 사용하여 왼쪽 항목을 정당화하고 오른쪽 항목이 정당화되었습니다. 레이아웃에는 다른 중력 값이 필요하며 필요하지 않은 왼쪽 항목의 크기를 제어하려면 속성이 필요합니다.
ListView를 초기화 한 내 ListActivity 클래스의 메소드 :
private void initListView()
{
final String AuthorName = "Author: ";
final String CopyrightName = "CopyRight: ";
final String PriceName = "Price: ";
final String[] matrix = { "_id", "name", "value" };
final String[] columns = { "name", "value" };
final int[] layouts = { android.R.id.text1, android.R.id.text2 };
MatrixCursor cursor = new MatrixCursor(matrix);
DecimalFormat formatter = new DecimalFormat("##,##0.00");
cursor.addRow(new Object[] { key++, AuthorName, mAuthor });
cursor.addRow(new Object[] { key++, CopyrightName, mCopyright });
cursor.addRow(new Object[] { key++, PriceName,
"$" + formatter.format(mPrice) });
SimpleCursorAdapter data =
new SimpleCursorAdapter(this,
R.layout.viewlist_two_items,
cursor,
columns,
layouts);
setListAdapter( data );
} // end of initListView()
MatrixCursor 생성자의 매개 변수는 커서의 순서와 열의 이름을 정의하는 문자열 배열입니다. 중요 : "_id"열을 추가하십시오. MatrixColumn은 예외를 던지고 작동하지 않습니다!
Mauthor, McOpyright 및 MPrice의 세 가지 변수는 My ListAdaptor 클래스의 3 명의 데이터 구성원이며 다른 곳에서 초기화됩니다. 내 실제 코드에서 Mauthor는 실제로이 메소드로 작성된 저자 이름 목록에서 내장되어 있습니다. 저자 이름은 " n"을 이름 사이의 분리기로 사용하여 단일 문자열로 연결됩니다. 이로 인해 여러 저자 이름이 동일한 텍스트 뷰에서 다른 줄에 나타납니다.
SimplecursorAdapter CTOR 매개 변수는 각 목록 행에 사용할 뷰의 ID, 데이터가 포함 된 커서, 각 요소가 커서의 열 이름 인 문자열 및 해당 목록 행의 각 항목에 대해 뷰를위한 View ID 배열.
다른 팁
해당 속성이있는 기존 어댑터를 찾을 수없는 경우 고유 한 사용자 정의 어댑터를 만들고 시야에 매핑 할 수 있습니다.
그만큼 안녕하세요, 그리드 뷰 튜토리얼은이 작업을 수행하는 방법을 보여줍니다.
JRL이 맞습니다. 각 행에 표시 될 내용을 제어 할 수있는 자신의 사용자 정의 어댑터를 작성해야합니다. 당신은 찾을 수 있습니다 이것 도움이 되는. 보다 진보 된 예를 찾을 수 있습니다 여기 http://developerlife.com/tutorials/?p=327.
목록을 원하지 않거나 사용하지 않으면 TableLayout이 데이터를 표시 할 수 있습니다. 그러나 그것은 각 셀을 채워야하기 때문에 수동 접근법입니다.
최고의 성공.
누구의 수업을 만들지 않겠습니까? toString()
보고 str(id) + " | " + personName
, 그리고 그것을 대신 템플릿 클래스로 사용하십시오. String
물체?
XML Android : Numcolumns = "2"에 이것을 추가 할 수 있습니다.