ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • adapter사용자 정의_customlist 예제
    카테고리 없음 2013. 2. 20. 14:30
    반응형

    package com.example.customlist;

     

    import java.util.ArrayList;

    import java.util.List;



    import android.os.Bundle;

    import android.app.Activity;

    import android.view.Menu;

    import android.view.View;

    import android.widget.Button;

    import android.widget.EditText;

    import android.widget.ListView;

    import android.widget.Toast;


    public class MainActivity extends Activity implements MyAdapter.OnAdapterItemImageClickListener {


    ListView list;

    MyAdapter mAdapter;

    EditText inserTitle;

    EditText insertDesc;

    List<MyData> items = new ArrayList<MyData>();

        @Override

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            list = (ListView)findViewById(R.id.listView1);

            initData();

            mAdapter = new MyAdapter(this,items);

            mAdapter.setOnAdapterItemImageClickListener(new MyAdapter.OnAdapterItemImageClickListener() {

    @Override

    public void onAdapterItemImageClick(MyData data) {

    // TODO Auto-generated method stub

    Toast.makeText(MainActivity.this, "mydata title :"+

    data.title, Toast.LENGTH_SHORT).show();

    }

    });

            list.setAdapter(mAdapter);

            //어댑터에 추가된 add 함수 활용

            inserTitle=(EditText)findViewById(R.id.editText1);

            insertDesc=(EditText)findViewById(R.id.editText2);

            Button btn =(Button)findViewById(R.id.button1);

            btn.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    mAdapter.add(new MyData(inserTitle.getText().toString(), insertDesc.getText().toString()));

    }

    });

            

        }


        public void initData(){

        items.add(new MyData("title1"," desc"));

        items.add(new MyData("title1"," desc"));

        items.add(new MyData("title1"," desc"));

        }

        @Override

        public boolean onCreateOptionsMenu(Menu menu) {

            // Inflate the menu; this adds items to the action bar if it is present.

            getMenuInflater().inflate(R.menu.main, menu);

            return true;

        }


    @Override

    public void onAdapterItemImageClick(MyData data) {

    // TODO Auto-generated method stub

    }

        

    }


    ==================

    package com.example.customlist;


    import java.util.ArrayList;

    import java.util.List;


    import com.example.customlist.MyItemView.onItemImageClickListener;


    import android.content.Context;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.BaseAdapter;


    public class MyAdapter extends BaseAdapter implements onItemImageClickListener{

    List<MyData> mData = new ArrayList<MyData>();

    Context mContext;

    OnAdapterItemImageClickListener mListener;

    public interface OnAdapterItemImageClickListener{

    public void onAdapterItemImageClick(MyData data);

    }

    public void setOnAdapterItemImageClickListener(OnAdapterItemImageClickListener listener){

    mListener = listener;

    }


    public MyAdapter(Context context) {

    // TODO Auto-generated constructor stub

    mContext = context;

    }

    public  MyAdapter(Context context,List<MyData>items) {

    // TODO Auto-generated method stub

    mContext = context;

    mData.addAll(items);

     

    }

    //add함수를 추가 

    public void add(MyData data){

    mData.add(data);

    //데이터를 추가한후 리스트뷰에 다시그리도록

    notifyDataSetChanged();//리스트 뷰에 다시 그리는 함수임

    }

    @Override

    public int getCount() {

    // TODO Auto-generated method stub

    return mData.size();

    }


    @Override

    public Object getItem(int position) {

    // TODO Auto-generated method stub

    return mData.get(position);

    }


    @Override

    public long getItemId(int position) {

    // TODO Auto-generated method stub

    return position;

    }


    @Override

    /**

    * parent 는 리스트 뷰가 된다.어댑터를 사용하고있는

    * convertview 로 넘어온 곳으로 다시 세팅해준ㄷ

    * 스크롤 되면 보여지는 4개외의 영역을 활용하는것.

    */

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

    // TODO Auto-generated method stub

    MyItemView view ;

    if (convertView ==null) {

    view = new MyItemView(mContext);

    view.setOnItemImageClickListener(this);

    }

    else{

    view = (MyItemView)convertView;

    }

    view.setData(mData.get(position));

    return view;

    }


    @Override

    public void onItemImageClick(MyData data) {

    // TODO Auto-generated method stub

    if (mListener !=null) {

    mListener.onAdapterItemImageClick(data);

    }

    }


    }

    =======================

    package com.example.customlist;


    public class MyData {

    public String title;

    public String desc;

    public MyData(String title,String desc){

    this.title = title;

    this.desc = desc;

    }

    //

    }============================

    package com.example.customlist;


    import android.content.Context;

    import android.view.LayoutInflater;

    import android.view.View;

    import android.widget.ImageView;

    import android.widget.LinearLayout;

    import android.widget.TextView; 

    /**

     * 

     * @author Dream

     * layoutinflater 를 얻어와서 

     */

    public class MyItemView extends LinearLayout {


    TextView titleView;

    TextView descView;

    MyData mData;

    ImageView imageView;

    MyAdapter mListener;

    //

    public interface onItemImageClickListener{

    public void onItemImageClick(MyData data);

    }

    public void setOnItemImageClickListener(MyAdapter myAdapter){

    mListener = myAdapter;

    }

    public MyItemView(Context context) {

    super(context);

    // TODO Auto-generated constructor stub

    ///레이아웃 인플레이터 얻어오기

    LayoutInflater inflater = LayoutInflater.from(context);

    inflater.inflate(R.layout.item_layout, this);

    titleView = (TextView)findViewById(R.id.textView1);

    descView = (TextView)findViewById(R.id.textView1);

    imageView=(ImageView)findViewById(R.id.imageView1);

    imageView.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    if (mListener !=null) {

    mListener.onItemImageClick(mData);

    }

    });

    }

    public void setData(MyData data){

    mData = data;

    titleView.setText(data.title);

    descView.setText(data.desc);

    }

    }

    =======================

    package com.example.customlist;


    public interface OnItemImageClickListener {


    void onItemImageClick(MyData mData);


    }

    ========================

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

        xmlns:tools="http://schemas.android.com/tools"

        android:id="@+id/LinearLayout1"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        android:paddingBottom="@dimen/activity_vertical_margin"

        android:paddingLeft="@dimen/activity_horizontal_margin"

        android:paddingRight="@dimen/activity_horizontal_margin"

        android:paddingTop="@dimen/activity_vertical_margin"

        tools:context=".MainActivity" >


        <EditText

            android:id="@+id/editText1"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:ems="10" >


            <requestFocus />

        </EditText>


        <EditText

            android:id="@+id/editText2"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:ems="10" />


        <Button

            android:id="@+id/button1"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="Button" />


        <ListView

            android:id="@+id/listView1"

            android:layout_width="match_parent"

            android:layout_height="wrap_content" >

        </ListView>


    </LinearLayout>

    ===========================

    <?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="match_parent"

        android:orientation="horizontal" >


        <ImageView

            android:id="@+id/imageView1"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:src="@drawable/ic_launcher" />


        <LinearLayout

            android:id="@+id/LinearLayout1"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:orientation="vertical" >


            <TextView

                android:id="@+id/textView2"

                android:layout_width="205dp"

                android:layout_height="wrap_content"

                android:text="Medium Text"

                android:textAppearance="?android:attr/textAppearanceMedium" />


            <TextView

                android:id="@+id/textView1"

                android:layout_width="189dp"

                android:layout_height="wrap_content"

                android:text="Large Text"

                android:textAppearance="?android:attr/textAppearanceLarge" />

        </LinearLayout>


    </LinearLayout>

    반응형
Designed by Tistory.