android控件及事件的施用(1)
最近没事总结了下以前学的东西,从基本的开始,以供新人学习
Button
ListView 列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View。 2.适配器 用来把数据映射到ListView上的中介。 3.数据 具体的将被映射的字符串,图片,或者基本组件。 根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter 其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。 ArrayAdapter: <!--StartFragment --> import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainButton extends Activity {
private TextView tv;
private Button btn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View paramView) {
tv.setText("我被单击了");
}
});
}
}
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainListView extends Activity {
private ListView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = new ListView(this);
/*创建listView的适配器,参数:
* this:Context(此处为固定用法)
* android.R.layout.simple_expandable_list_item_1:这个为list布局
* getData():为数据源
*/
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getData()));
//把listView添加到界面显示出来
setContentView(listView);
/*
* 给LIstView添加监听
* 注意,这里的监听和以前Button控件的监听添加是一样的,只是他们实现的接口不一样,
* Button监听是实现了android.view.View.OnClickListener,在常用的控件中只有Button监听实现了这个接口
* 这里实现了android.widget.AdapterView.OnItemClickListener在以后的控件监听事件中,都实现了这个接口类中的方法
*
* 在onItemClick方法中的参数在以后别的控件中添加监听方法中的参数是一样的,我们经常用的是第三个参数
* 也就是int paramInt:paramInt 是你选的第几项 paramInt是从0开始的
*/
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> paramAdapterView,
View paramView, int paramInt, long paramLong) {
/*
* Toast 为友好提示,他实现的是抽象类里的抽象方法,Toast为提示信息里最简单的方法,其中最后一个参数
* 为显示时间长短设置,本人感觉也是最常用的方法对提示信息有兴趣的朋友可以查下其他资料
*/
Toast.makeText(MainListView.this, "您选择了 List"+paramInt, Toast.LENGTH_SHORT).show();
}
});
}
//定义一个LIst<String>数组,本数组为ListView数据源
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("List 1");
data.add("List 2");
data.add("List 3");
data.add("List 4");
return data;
}
}
SimpleAdapter:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.SimpleAdapter;
public class ListViewActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*
* 首先定义一个simpleAdapter布局管理器,simpleAdapter的参数一次是:
* this:viewLIst.xml文件
* getDatat():为数据源
* R.layout.viewlist: 定位XML文件
* HashMap的 title 和 info,img。
* 布局文件的组件id,title,info,img
*/
SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.viewlist,
new String []{"title","info","img"}, new int []{R.id.title,R.id.info,R.id.img});
setListAdapter(adapter);
}
//HashMap的每个键值数据映射到布局文件中对应id的组件上,因为系统没有对应的布局文件可用
private List<Map<String,Object>> getData(){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map =new HashMap<String,Object>();
map.put("title", "G1");
map.put("info", "Google 1");
map.put("img", R.drawable.icon);
list.add(map);
map = new HashMap<String,Object>();
map.put("title", "G2");
map.put("info", "Google 2");
map.put("img", R.drawable.icon);
list.add(map);
map = new HashMap<String , Object>();
map.put("title", "G3");
map.put("info", "Google 3");
map.put("img", R.drawable.icon);
list.add(map);
return list;
}
}