arrayadapter+simpleadapter
public class MainActivity extends Activity {
private ListView list;//视图,即为电视屏幕
private ArrayAdapter<String> arradapter;//数据适配器,适用于数组+集合,即为无线
private SimpleAdapter simadapter;
private List<Map<String, Object>> datalist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list =(ListView)findViewById(R.id.listView1);//数组形式的数据源,即为电视台
//1.新建一个数据适配器
//.SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
//2.适配器加载适配源
String [] arrdata={"mook1","i","like","u"};
arradapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrdata);
datalist=new ArrayList<Map<String,Object>>();
simadapter=new SimpleAdapter(this, getdata(), R.layout.item, new String[]{"pic","text"}, new int[]{R.id.pic,R.id.text});
//3.视图加载适配器
//list.setAdapter(arradapter);
list.setAdapter(simadapter);
}
private List<Map<String, Object>> getdata(){
for (int i=0;i<20;i++){
Map<String , Object> map=new HashMap<String, Object>();
map.put("pic", R.drawable.ic_launcher);
map.put("text", "mook"+i);
datalist.add(map);
}
return datalist;
}
}
spinner
public class MainActivity extends Activity {
private TextView text1,text2,text3;
private EditText edit;
private Spinner spin;
private ArrayAdapter<String> arr_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1=(TextView)findViewById(R.id.textView1);
text2=(TextView)findViewById(R.id.textView2);
text3=(TextView)findViewById(R.id.textView3);
spin=(Spinner)findViewById(R.id.spinner);
edit=(EditText)findViewById(R.id.editText1);
//1、新建适配器 2、适配器加载数据源 3、视图加载适配器
String[] data=new String[]{"小学","初中","高中","本科","研究生"};
arr_adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
arr_adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spin.setAdapter(arr_adapter);
spin.setOnItemSelectedListener(listener);
}
private Spinner.OnItemSelectedListener listener=
new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
String s1=edit.getText().toString();
String s2=spin.getSelectedItem().toString();
text3.setText(s1+"的学历:"+s2);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
};
}
2017/2/22
Android攻城狮的第一门课(入门篇)
第5章 认识按钮Button以及ImageButton
text属性内容放置在value-string.xml中
加注释快捷键:
ctrl+/ //注释
ctrl+shift+/ /**/注释
监听三种:
public class MainActivity extends Activity implements OnClickListener{
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
/*监听的三种方式
* 1、匿名内部类
* 2、外部类
* 3.接口
*/
/* 1
* btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Log.i("tag", "匿名内部类");
//Toast.makeText(MainActivity.this, "匿名", Toast.LENGTH_LONG);
}
});*/
//btn.setOnClickListener(listener);
btn.setOnClickListener(this);
}
/*2
* OnClickListener listener =new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Log.i("tag", "匿名内部类");
Toast.makeText(MainActivity.this, "匿名", Toast.LENGTH_LONG);
}
};*/
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
Log.i("tag", "匿名内部类");
}
}
textview实现跑马灯效果
<com.example.meng.marqueettext
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"//单行
android:ellipsize="marquee"//去掉省略号
android:focusable="true"//使其循环
android:marqueeRepeatLimit="marquee_forever"
//无限制循环
android:focusableInTouchMode="true"
android:text="@string/text_name"/>
<com.example.meng.marqueettext
android:id="@+id/textView1"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:text="@string/text_name"/>
step1:textview增加若干属性,即可实现一个textview的跑马灯效果
step2 : 复制一个textview,两个的情况下必须建立新的类marquee,继承textview,三个构造方法+isfucused方法return TRUE
step3:包名+类名代替textview
动态匹配功能:显示的下拉列表,使用arrayadapter
private AutoCompleteTextView act;
private ArrayAdapter<String> arr_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
act=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
String[] resource={"beijing1","beijing2","beijing3","shanghai1","shanghai2"};
arr_adapter =new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
resource);
act.setAdapter(arr_adapter);
}
注意两条属性:
提示
输入几个字母开始提示
android:hint="请输入你要搜索的关键词"
android:completionThreshold="3"
与autocompletetextview不同的是,可以用逗号作为分隔符,进行多选。
private ArrayAdapter<String> arr_adapter;
private MultiAutoCompleteTextView mct;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mct=(MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1);
String[] resource={"beijing1","beijing2","beijing3","shanghai1","shanghai2"};
arr_adapter =new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
resource);
mct.setAdapter(arr_adapter);
mct.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
private ToggleButton tb;
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tb=(ToggleButton) findViewById(R.id.toggleButton1);
iv=(ImageView) findViewById(R.id.imageView3);
tb.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//当tb被点击时,执行当前的方法
//第一个参数检测是哪个tb被点击了,第二个参数判断当前tb的状态
iv.setBackgroundResource(isChecked?R.drawable.open:R.drawable.close);
}
private CheckBox cb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb=(CheckBox) findViewById(R.id.checkBox1);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// 匿名内部类实现监听,通过该方法来监听CheckBox是否被选中
//ischecked参数可以判断当前的cb是否被选中
if (isChecked) {
String text= cb.getText().toString();
Log.i("tag", text);//在控制台的日志中显示text
}
}
});
public class MainActivity extends Activity implements android.widget.RadioGroup.OnCheckedChangeListener {
private RadioGroup rg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rg=(RadioGroup) findViewById(R.id.radioGroup1);
rg.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio1:
Log.i("tag", "men");
break;
case R.id.radio2:
Log.i("tag", "women");
break;
default:
break;
}
}
}
使用接口时,继承的是android.widget.RadioGroup.OnCheckedChangeListener
若直接写oncheckedchangelistener,必须要导入对应的包。
radiogroup是单选,可以用switch语句
gravity决定其子类控件的属性
写在线性布局中。
<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:gravity="bottom|center_horizontal"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
layout_gravity决定的是当前父类控件的位置。
<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"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_gravity="center_horizontal|center"/>
</LinearLayout>
界面的布局,往往需要两种属性共同控制,父类和子类。
如果父类和子类中的某些属性相悖,当然是听爸爸的啦~
layout_weight 子类控件在父类控件中所占比例。
<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"
>
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button"
android:layout_weight="1" />
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button"
android:layout_weight="1"
/>
</LinearLayout>