今天在开发过程中遇到了设置页面需要弹跳一个PopupWindow ,PopupWindow 中是一个ListView,在ListView中进行点击,获取到相应的数据,并且在setting中进行获取值,并且在页面中显示,这样一个2层结构,开始的时候我认为在settingActivity中进行findById进行获取到对象就可以进行添加事件,这样操作就可以完成,通过item的监听器,就可以执行这样的操作,但是当listView中有一个readuButton,这样就需要获取到readuButton的对象,这样的2及操作是获取不到相应的对象的,所以在此学习了ListView的学习。
ListView和实现BaseAdapter进行配置,可以将ListView绑定到BaseAdapter中:
public class SettingTaskNumAdapter extends BaseAdapter {
private Context context;
private String[] DATAS;
private LayoutInflater layoutInflater;
private PopupWindow window;
public SettingTaskNumAdapter(Context context,String[] DATAS){
this.context = context;
this.DATAS = DATAS;
this.layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return DATAS.length;
}
@Override
public Object getItem(int position) {
return DATAS[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
convertView = layoutInflater.inflate(R.layout.setting_task_num_listview_item,null);
convertView.findViewById(R.id.setting_task_radio_but).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("test","haha");
}
});
TextView tv = (TextView) convertView.findViewById(R.id.setting_task_num_item);
tv.setText(DATAS[position]);
return convertView;
}
}
在这样可以获取到button的值,在个getView 方法中进行的是页面的绘画,这个页面的绘画是一行一行进行的,每一行的格式都是你定义的item的格式,当有数据需要进行添加的时候,必须获取到相应的ID对象,再进行内容的添加,converView是绘制当前行的对象,所以你可以通过item的id获取相应的内容,这一点很重要
今天终于学会了,高兴