常用属性
自定义样式
bg_checkbox.xml文件
未选中时
选中时
监听事件
public class CheckBoxActivity extends AppCompatActivity {
private CheckBox mCb5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check_box);
mCb5 = findViewById(R.id.cb_5);
mCb5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(CheckBoxActivity.this,isChecked?"选中":"未选中",Toast.LENGTH_SHORT).show();
}
});
}
}
效果
主程序代码
public class ImageViewActivity extends AppCompatActivity {
private ImageView mIv4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_view);
mIv4 = findViewById(R.id.iv_4);
Glide.with(this).load("https://www.baidu.com/img/bd_logo1.png?where=super").into(mIv4);
//网路图片地址,Glide红字报错,按alt+enter键,选择第一个import class即可解决
}
}
2-8 列表视图 ListView(不常用,可以用GridView代替,了解即可)
常用属性
activity_listview.xml文件
自定义选中效果,不是内部具体视图
效果
这里说一下color.xml文件里的colorTransparent颜色,是透明色
#00000000
layout_list_item.xml文件,定义ListView的具体布局
具体布局效果
Adapter接口
MyListAdapter.java文件,把定义的ListView的具体布局放到ListView里
package com.ylw.helloworld.listview;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.ylw.helloworld.R;
public class MyListAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mLayoutInflater;
public MyListAdapter(Context context){
this.mContext = context;
mLayoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() { //获取列表长度,就是ListView内部有多少个列表
return 10;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
static class ViewHolder{
public ImageView imageView;
public TextView tvTitle,tvTime,tvContext;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
convertView = mLayoutInflater.inflate(R.layout.layout_list_item,null);
holder = new ViewHolder();
holder.imageView = convertView.findViewById(R.id.iv);
holder.tvTitle = convertView.findViewById(R.id.tv_title);
holder.tvTime = convertView.findViewById(R.id.tv_time);
holder.tvContext = convertView.findViewById(R.id.tv_content);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
//给控件赋值,这样原来在layout_list_item.xml文件里的赋值就不起作用的
holder.tvTitle.setText("这是标题");
holder.tvTime.setText("2088-08-08");
holder.tvContext.setText("这是内容");
Glide.with(mContext).load("https://www.baidu.com/img/bd_logo1.png?where=super").into(holder.imageView);
return convertView;
}
}
Adapter接口效果,可以看到在这里的赋值已经覆盖了原来的赋值
设置监听事件
ListViewActivity.java文件
package com.ylw.helloworld.listview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.ylw.helloworld.R;
public class ListViewActivity extends Activity {
private ListView mLv1;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
mLv1 = findViewById(R.id.lv_1);
mLv1.setAdapter(new MyListAdapter(ListViewActivity.this));
mLv1.setOnItemClickListener(new AdapterView.OnItemClickListener() { //点击事件
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
Toast.makeText(ListViewActivity.this,"点击 pos"+position,Toast.LENGTH_SHORT).show();
//跳转
}
});
mLv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { //长按事件
@Override
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
Toast.makeText(ListViewActivity.this,"长按 pos:"+position,Toast.LENGTH_SHORT).show();
return true; //false会告诉系统没有处理完,长按后还会出发点击,这里应该返回true,表示事件结束,就不会触发点击了
}
});
}
}
点击和长按效果,由于瞬间变色效果不好截取,这里就不展示了。这里点击是点击第一个,长按第二个,可以看出,ListView排序是从0开始的。