문제

다음을 보여주는 그리드보기를 보여주는 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"에 이것을 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top