2012-10-11 7 views
18

여기 내 활동에 내 코드가 한 줄에 2 열이하기의 GridView를 설정안드로이드는

public class ImageAdapter extends BaseAdapter { 
    private Context context; 
    private final String[] mobileValues; 

    private TextView t; 
    public ImageAdapter(Context context, String[] mobileValues) { 
     this.context = context; 
     this.mobileValues = mobileValues; 
    } 

    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); 

      // get layout from mobile.xml 
      gridView = inflater.inflate(R.layout.mobile, null); 




      // set value into textview 
      TextView textView = (TextView) gridView 
        .findViewById(R.id.grid_item_label); 
      textView.setText(mobileValues[position]); 
      Button b = (Button) gridView.findViewById(R.id.grid_item_button); 
      Button b2 = (Button) gridView.findViewById(R.id.grid_item_button2); 
      t = (TextView) gridView 
        .findViewById(R.id.grid_item_number); 
      b.setOnClickListener(new MyOnClickListener(t)); 
      b2.setOnClickListener(new MyOnClickListenerm(t)); 
      // set image based on selected text 
      ImageView imageView = (ImageView) gridView 
        .findViewById(R.id.grid_item_image); 

      String mobile = mobileValues[position]; 

      if (mobile.equals("Windows")) { 
       imageView.setImageResource(R.drawable.windows_logo); 
      } else if (mobile.equals("iOS")) { 
       imageView.setImageResource(R.drawable.ios_logo); 
      } else if (mobile.equals("Blackberry")) { 
       imageView.setImageResource(R.drawable.blackberry_logo); 
      } else { 
       imageView.setImageResource(R.drawable.android_logo); 
      } 

     } else { 
      gridView = (View) convertView; 
     } 

     return gridView; 
    } 

    private void clickedButton(TextView tv){ 

     int num = Integer.parseInt(tv.getText().toString()); 
     ++num; 
     tv.setText(Integer.toString(num)); 

    } 
    private void clickedButtonm(TextView tv){ 

     int num = Integer.parseInt(tv.getText().toString()); 
     if(num>0){ 
      --num; 
      tv.setText(Integer.toString(num)); 
     } 
    } 
    @Override 
    public int getCount() { 
     return mobileValues.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 
    class MyOnClickListener implements OnClickListener{ 

     public final TextView tv; 

     public MyOnClickListener(TextView tv){ 
      this.tv=tv; 
     } 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      clickedButton(tv); 
     } 

    } 
    class MyOnClickListenerm implements OnClickListener{ 

     public final TextView tv; 

     public MyOnClickListenerm(TextView tv){ 
      this.tv=tv; 
     } 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      clickedButtonm(tv); 
     } 

    } 

} 

내 mobile.xml :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp" > 

    <ImageView 
     android:id="@+id/grid_item_image" 
     android:layout_width="wrap_content" 
     android:layout_height="74dp" 
     android:layout_marginRight="10px" 
     android:layout_weight="1.44" 
     android:src="@drawable/android_logo" > 
    </ImageView> 


    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/grid_item_button" 
      android:layout_width="30dp" 
      android:layout_height="23dp" 
      android:text=" " /> 

     <TextView 
      android:id="@+id/grid_item_number" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="0" /> 

      <Button 
      android:id="@+id/grid_item_button2" 
      android:layout_width="30dp" 
      android:layout_height="23dp" 
      android:text=" " /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/grid_item_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5px" 
     android:text="@+id/label" 
     android:textSize="15px" > 
    </TextView> 

</LinearLayout> 

행 당 2 개의 항목을 삐뚤어지지 않게하는 것이 어렵다는 것을 알았습니다. 당신은 또한 다음과 같은 방법으로 의 GridView에서 프로그래밍 방식으로 열 수를 설정할 수 있습니다 http://www.mediafire.com/?25vae87fvahu4wp

+1

활동에 대한 XML (하나를 제시해주십시오 실제 GridView 정의). 간단하게'android : numColumns = "2"'를 그 정의에 추가 할 수 있어야한다. –

답변

78

사용 당신의 GridView 위젯에서 android:numColumns="2"

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/grid" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="2" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:scrollbarStyle="outsideOverlay" 
    android:verticalScrollbarPosition="right" 
    android:scrollbars="vertical"> 
</GridView> 

당신은의 GridView 주제에 초점이 link .Try 안드로이드 UI에 익숙해 질 수

18

: 나는 여기

내 소스 코드와 같은 생각을 이행 할 수 있도록 내의 GridView를 포맷하는 방법을 알고 싶습니다 -

여기서 'n'은 열 수입니다.