본문 바로가기
카테고리 없음

adapter사용자 정의_customlist 예제

by ByteBridge 2013. 2. 20.
반응형

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>

반응형