2012-05-12 8 views
-3

나는 유사한 ListView 또는 각 행 3 열, 3 개 버튼으로 구성 TableLayout, 뭔가 만들어야합니다사용자 정의`ListView` 또는 TableLayout?

enter image description here

을하지만 화면은이 제어 의지가 텍스트 필드 나 다른 레이아웃을 포함 포함되지 않습니다 , 나는 다음과 같은 형태를 취하기 위해 그리드가 필요합니다 (예를 들면).

달성 방법에 대한 아이디어 및 Button 클릭 처리 방법에 대한 아이디어가 있으십니까? Android를 처음 사용하기 때문에 만드는 법을 모르겠습니다. 새로운 다음 안드로이드 일부 응용 프로그램, 튜토리얼의 모양과도 아무도이 응용 프로그램을 만들 것입니다 방법을 말할 수있는 제어하도록

enter image description here

+0

당신은이 3 개의 행만 있거나 증가 할 것입니다. 한 가지 더 확장 버튼을 만들면 더 많은보기가 표시됩니다 ... –

+0

사용자가 도움을 원하면 질문을 수정하고 개선하십시오. 그 두 이미지는 무엇입니까? (당신이 원하는 것처럼 전체 ** 레이아웃의 스케치를 제공하면 더 좋습니다.) '버튼'클릭 처리? 어디에? 클릭 이벤트에서 무엇을하고 싶습니까? 등등 – Luksprog

답변

6

ListView은 주로 변경 가능한 데이터에 사용됩니다. 매번 같은 방식으로 표시 할 수있는 데이터가 있고 성장/삭제할 수있는 경우 ListView가 좋은 옵션입니다.

정적 데이터가있는 경우 정적 레이아웃 (예 : TableLayout, LinearLayout 등)을 사용하는 것이 좋습니다. 그것은 모두 가지고있는 데이터와 사용 방법에 달려 있습니다.

스마트 폰에 공간이 없으므로 해당 스크린 샷에있는 것과 동일한 열을 사용하지 않기를 바랍니다.

3 열을 원한다고 가정하고 그 데이터를 변경할 수 있습니다.

android:orientation="horizontal이있는 루트에서 costum ListViewLinearLayout을 사용할 수 있습니다. 그런 다음 각 요소를 삽입하면 android:layout_width="0dp"과 함께 layout_weight="1"을 사용해야합니다. 이 조합을 통해 ListView 행의 각 요소는 동일한 너비를 가지므로 일부 선택 사항입니다.

같은 것을 보인다해야 귀하의 costum 목록 행 :

<LinearLayout 
    android:layout_width="fill_parent" 
    ... 
    android:orientation="horizontal" > 
<TextView 
    android:layout_width="0dp" 
    ... 
    android:layout_weight="1" /> 
... 

버튼을 처리하는 방법을 당신이 당신의 costum 목록보기에 어댑터 내부의 getView 방법으로 그것을 얻을 때 버튼에 setOnClickListener을 할 필요가 클릭 .

그러면 단추와 ListView를 클릭하는 데 문제가있을 것입니다. 이를 해결하는 일반적인 방법은 버튼을 android:focusable="false"으로 xml에 선언하여 선언하는 것입니다. 그러나 한 번에 한 가지) 때문에 주석의

EDIT (:

당신이 체크 박스가/비활성화 당신이 어떤 일을 할 필요가 버튼을 사용하려면 : /이 버튼)을 가능하게하지 않도록 체크 박스를 추가 귀하의 getView 귀하의 costum ListView의 어댑터에.

당신은 필요에 :

  • 같은 것을 사용하여 확인란을 받기 다음 인플레이터 당신이의 getView에 정의 된 하나이며 checkboxid 당신이 당신의 XML 행에 정의 된 ID입니다 CheckBox myCheckBox = (CheckBox) inflater.findViewById(R.id.checkboxid).
  • 은 체크 박스 수신기에서에서 액세스 가능으로 버튼을 저장 : myCheckBox.setTag(button) 버튼을 활성화/비활성화 할 버튼 그리고 당신은 그에게 당신이
  • 이 체크 박스에 setOnCheckedChangeListener 설정 myCheckBox을 가지고 같은 방법으로 얻을 수있는 당신 체크 상자의 상태에 따라 버튼의 가시성을 변경하십시오.

마지막 총알이 같은 것을 소리를해야합니다

myCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     Button myButton = (Button) buttonView.getTag(); 

     if (isChecked) 
      myButton.setVisibility(View.VISIBLE); 
     else 
      // Use GONE if you want to get that space for other views 
      myButton.setVisibility(View.GONE); 

    } 
}); 
+0

오전 필요가있는 경우 행에 버튼을 활성화하고 그 반대로, 가장 좋은 경우에 관해서는 – AMH

+0

클릭하면 확인란을 추가하려면 ListView 다음 costum 행을 사용하는 경우 'findViewById'를 가진 CheckBox. 당신은'setOnCheckedChangeListener'를하고 그 리스너에서 체크 박스가 체크되거나 체크되지 않았을 때 체크 할 수 있습니다. 그러나, 나는 당신이 이것에 간단한 속임수를 할 필요가 있다고 믿는다. getView에서'view.setTag (button)'을 할 필요가있다. 이 경우에 대한보기는 사용자가 반환 할보기이고 단추는 사용/사용하지 않을보기입니다. 확인란을 정의한 수신기에서 버튼을 가져올 수 있도록이 작업을 수행해야합니다. 당신은'view.getTag()'을 수행하는 버튼을 얻을 수 있습니다. –

+0

이 새롭습니다. 대답을 업데이트하고 예제를 제공 할 수 있습니다. – AMH

1

나는 경우,이 같은 일부 응용 프로그램을보기 위해 조언을 것입니다 그것은 버그 또는 무언가였습니다. 그러면 그것은 답할 수있을 것입니다. 그러나 당신의 질문은 정말로 광대합니다. 응용 프로그램의 문제가 아니라 전체 응용 프로그램을 개발하는 방법. 나는 더 나은 생각, 당신은이 응용 프로그램이나 이것 좀 봐 link 너무. 그것은 당신이 안드로이드로 시작하는 데 도움이 될 것입니다.

+0

오전 그냥 시작을 – AMH

0

을 내가 당신에게 문제의 완전한 구현을 제공합니다. 먼저 XML로 파일의

이름 목록보기를 만들 : 그 하나의 텍스트 상자에 하나 이상의 XML이

파일 이름과 같은 하나 개의 버튼을 생성 한 후 Yourlist.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearlayout_id" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:background="@color/encode_view"> 

    <ListView 
     android:id="@+id/info_list_id" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_above="@+id/cancelinfobtn_id" > 
    </ListView> 

    </RelativeLayout> 

을 = youCustomlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView" /> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      /> 

    </RelativeLayout> 

지금이

같은 하나 개의 사용자 지정 목록을 만들

마지막으로 주 활동에 어댑터를 만든 다음 어댑터 생성자를 호출하고 목록보기에서이 어댑터를 설정하십시오.

관련 문제