본문 바로가기

자료

Customize Gallery

ListView는 많이 커스텀해서 사용했다.

 

이번엔 가로 ListView가 필요해서 찾아보니.. 지원하지 않고 결국 Gallery를 이용해다 한단다...

 

제일큰 난관은 갤러리가 사진만 받게 되어 있다는것이다...

 

이걸... ListView처럼 내가 만든 레이아웃으로 넣는것이 문제였다...

 

모든 문제가 그렇듯 방법을 알면 간단 한것이였다 ㅠ.ㅠ

 

//1개의 이미지를 대신할 1개의 레이아웃

one_home_gal.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#EEEEBB"
    android:layout_width="200dp"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/imgPic"
        android:layout_width="fill_parent"
        android:layout_height="150dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/txttitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/imgBJ"
        android:layout_centerHorizontal="true"
        android:text="타이틀"/>

    <TextView
        android:id="@+id/txtschedule"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/txtBJtitle"
        android:layout_centerHorizontal="true"
        android:text="방송시간"/>

</RelativeLayout>

 

//갤러리를 표시할 레이아웃 (메인임)

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

    <Gallery 
  android:id="@+id/gallery"
  android:layout_width="fill_parent"
  android:layout_height="200dp"
  android:spacing="10dip"
  android:animationDuration="2000"
  android:layout_alignParentTop="true"
 />

    <ListView
        android:id="@+id/lisMainView"
        android:layout_below="@id/gallery"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
    </ListView>

</RelativeLayout>

 

//실행 엑티비티

public class GalMain extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.home_tab);

 

  //일반 리스트 아답타 설정
  ListView mListMainView = (ListView)findViewById(R.id.listMainView);
  mListMainView.setAdapter(new OnListAdapter(this));
  
  //갤러리 아답타 설정
  Gallery gal = (Gallery) findViewById(R.id.gallery);
  gal.setAdapter(new ImageAdapter2(this));
 }

 

 URL imageURL;
 ImageView imageJ;

//일반 ListView  커스텀 어댑터
 public class OnListAdapter extends BaseAdapter {
  private Context mContext;

  public OnListAdapter(Context c) {
   mContext = c;
  }

  public int getCount() {
   return 8;//list.size();
  }

  public Object getItem(int position) {
   return position;
  }

  public long getItemId(int position) {
   return position;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
   View grid;
   if (convertView == null) {
    grid = new ImageView(mContext);
    LayoutInflater inflater = getLayoutInflater();
    grid = inflater.inflate(R.layout.1개의레이아웃, parent, false);
   } else {
    grid = (View) convertView;
   }

   // 레이아웃ID 가져오기
   TextView txtViewerCnt = (TextView) grid.findViewById(R.id.txtViewerCnt);
   
    // 값 설정
    txtViewerCnt.setText("999명");
   return grid;
  }
  
 }
 

 

//여기가 이번에 시도한 커스텀 갤러리 어댑터
 public class ImageAdapter2 extends BaseAdapter {
  private Context mContext;

  public ImageAdapter2(Context c) {
   mContext = c;
  }

  public int getCount() {
   return 8;
  }

  public Object getItem(int position) {
   return position;
  }

  public long getItemId(int position) {
   return position;
  }

  public View getView(int position, View convertView, ViewGroup parent) {

   if (convertView == null) {
    LayoutInflater inflater = getLayoutInflater();
    convertView = inflater.inflate(R.layout.one_home_gal, parent, false);
   } else {
    convertView = (ImageView) convertView;
   }

   // 레이아웃ID 가져오기
   ImageView imgPic = (ImageView) convertView.findViewById(R.id.imgPic);
   TextView txttitle = (TextView) convertView.findViewById(R.id.txttitle);
   TextView txtschedule = (TextView) convertView.findViewById(R.id.txtschedule);
   
   try {
    // 값 설정
    String imgPath = "http://,,,,.jpg";
    imageURL = new URL(imgPath);
    Drawable d = Drawable.createFromStream(new URL(imgPath).openConnection().getInputStream(), "src");
    imgBJ.setImageDrawable(d);
    txtBJtitle.setText("타이틀");
    txtBJschedule.setText("스케쥴");
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   return convertView;
  }
 }

}