学习使用BaseAdapter来实现ListView,觉得最重要也最麻烦的是getView方法的编写。
今天自己实现了一个例子,似乎有点感觉了。
布局文件:
ui_lv.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
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=".LVActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/edittext_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingRight="3dip"
android:inputType="text"/>
<EditText
android:id="@+id/edittext_school"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingLeft="3dip"
android:inputType="text" />
</LinearLayout>
<Button
android:id="@+id/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/listview_show"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00aa00">
</ListView>
</LinearLayout>
ui_4listview.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="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/textview_list_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingRight="3dip"/>
<TextView
android:id="@+id/textview_list_school"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="3dip"/>
</LinearLayout>
继承BaseAdapter类:
package com.eking.example.adapter;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.eking.example.baseadapter4list.R;
public class MyListAdapter extends BaseAdapter {
private List< HashMap< String , String >> list;
private Context context;
public MyListAdapter ( List< HashMap< String , String >> list ,
Context context ) {
this.list = list;
this.context = context;
}
@ Override
public int getCount() {
return list.size();
}
@ Override
public Object getItem( int position ) {
return position;
}
@ Override
public long getItemId( int position ) {
return position;
}
@ Override
public View getView( int position , View convertView , ViewGroup parent ) {
HashMap< String , String > map = list.get(position);
if ( convertView == null ) {
LayoutInflater inflater=LayoutInflater.from(context);
convertView=inflater.inflate(R.layout.ui_4listview , null);
TextView textView_list_name = ( TextView ) convertView.findViewById(R.id.textview_list_name);
TextView textView_list_school = ( TextView ) convertView.findViewById(R.id.textview_list_school);
textView_list_name.setText(map.get("name").toString());
textView_list_school.setText(map.get("school").toString());
}
return convertView;
}
// private void show( int id ) {
// HashMap< String , String > map = list.get(id);
// Toast.makeText(context , map.get("name").toString() + "==" +
// map.get("school").toString() , Toast.LENGTH_SHORT).show();
// }
}
Activity类:
package com.eking.example.baseadapter4list;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.eking.example.adapter.MyListAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class LVActivity extends Activity {
private EditText editText_name;
private EditText editText_school;
private Button button_submit;
private ListView listView_show;
private List< HashMap< String , String >> list_data;
@ Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_lv);
init();
setListener();
}
@ Override
public boolean onCreateOptionsMenu( Menu menu ) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.lv , menu);
return true;
}
private void init() {
editText_name = ( EditText ) findViewById(R.id.edittext_name);
editText_school = ( EditText ) findViewById(R.id.edittext_school);
button_submit = ( Button ) findViewById(R.id.button_submit);
listView_show = ( ListView ) findViewById(R.id.listview_show);
editText_name.setHint("清输入姓名");
editText_school.setHint("请输入学校");
button_submit.setText("提交");
list_data = new ArrayList< HashMap< String , String >>();
}
private void setListener() {
button_submit.setOnClickListener(new OnClickListener() {
@ Override
public void onClick( View v ) {
submit();
}
});
listView_show.setOnItemClickListener(new OnItemClickListener() {
@ Override
public void onItemClick( AdapterView< ? > arg0 , View arg1 , int arg2 , long arg3 ) {
show(arg2);
}
});
}
private boolean submit() {
boolean flag = false;
String str_name = null;
String str_school = null;
if ( editText_name.getText() != null ) {
str_name = editText_name.getText().toString();
}
if ( editText_school.getText() != null ) {
str_school = editText_school.getText().toString();
}
if ( str_name != null && str_school != null && !str_name.equals("")&&!str_school.equals("")) {
System.out.println(str_name+"==="+str_school);
flag = true;
HashMap< String , String > map = new HashMap< String , String >();
map.put("name" , str_name);
map.put("school" , str_school);
list_data.add(map);
// set2Adapter();
MyListAdapter adapter=new MyListAdapter(list_data , this);
listView_show.setAdapter(adapter);
cleanEdit();
}
return flag;
}
private void set2Adapter() {
SimpleAdapter simpleAdapter = new SimpleAdapter(this , list_data , R.layout.ui_4listview , new String[] {
"name" ,
"school"
} , new int[] {
R.id.textview_list_name , R.id.textview_list_school
});
listView_show.setAdapter(simpleAdapter);
}
private void show( int id ) {
HashMap< String , String > map = list_data.get(id);
Toast.makeText(this , map.get("name").toString() + "==" + map.get("school").toString() , Toast.LENGTH_SHORT).show();
}
private void cleanEdit(){
editText_name.setText(null);
editText_school.setText(null);
}
}
实现效果:
点击Item,显示选择信息