본문 바로가기

소프트웨어/Android/Java/Ndk

Android] ListActivity에서 CustomAdapter 생성

public class MainActivity extends ListActivity {

private ArrayList< ApObject > list; //ApObject는 리스트에 담을 새로운 Class이다.

private WifiListAdapter wAdapter;


protected void onCreate(Bundle savedInstanceState) {

    

    list.clear();

//list 원소를 add하는 작업들..생략.. ex) list.add(~~);

wAdapter = new WifiListAdapter( this, R.layout.row, list); //Custom ArrayAdapter Call

setListAdapter(wAdapter); //Adapter setting



   }


   public class WifiListAdapter extends ArrayAdapter< ApObject > {


private ArrayList< ApObject > items;

public WifiListAdapter(Context context, int resource, ArrayList< ApObject > objects) {

super(context, resource, objects);

this.items = (ArrayList<ApObject>) objects;

}


@Override

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

View v = convertView;

if (v == null) {

//layout inflater를 이용해서 view에 inflate한다.(겹치는 개념)

                   LayoutInflater inflater =                             (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

v = inflater.inflate(R.layout.row, null);

}

ApObject apObject = items.get(position);

// UI layout에값을 대입 

if ( apObject != null) {

TextView bssid_txtview = (TextView) v.findViewById(R.id.bssid);

TextView ssid_txtview = (TextView) v.findViewById(R.id.bssid);

TextView capablities_txtview = (TextView) v.findViewById(R.id.capablities);

TextView freq_txtview = (TextView) v.findViewById(R.id.Freq);

TextView level_txtview = (TextView) v.findViewById(R.id.level);

bssid_txtview.setText( apObject.getBSSID() );

ssid_txtview.setText( apObject.getSSID() );

capablities_txtview.setText( apObject.getCapablities() );

freq_txtview.setText( apObject.getFreq() );

level_txtview.setText( ""+apObject.getSignalLevel() );

}

return v;

}


}

}



정보를 담는 row.xml은 아래와 같다.


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:orientation="vertical" >

    

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="BSSID: "

        android:id="@+id/bssid" 

        />

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="SSID: "

        android:id="@+id/ssid" 

        />

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Capabilities: "

        android:id="@+id/capablities" 

        />

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Freq: "

        android:id="@+id/Freq" 

        />

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="SignalLevel: "

        android:id="@+id/level" 

        />


</LinearLayout>