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>