自定义空间ListView_button 改进
上次的只能使用那种样式,不够灵活,这次添加了一个广播发送函数,添加一个item 发送一条广播,可以在主线程中接收这个广播来实现对item 的样式修改
核心代码
public class ListView_Button extends LinearLayout { private Context context; private ListView listView; private ImageButton button; private mAdapter adapter; public ListView_Button(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub this.context=context; initView(); } public ListView_Button(Context context) { super(context); // TODO Auto-generated constructor stub this.context=context; initView(); } public ArrayList<String> getDataArrayList(){ return adapter.getData(); } public ArrayList<EditText> getEditTexts(){ return adapter.getEditTexts(); } private void initView(){ this.inflate(context, R.layout.layout_listview_button, this); listView=(ListView)findViewById(R.id.listview_layoutview); adapter=new mAdapter(context); listView.setAdapter(adapter); button=(ImageButton)findViewById(R.id.imagebutton); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub adapter.addItem(); UpdateListView.setListViewHeightBasedOnChildren(listView); } }); } class mAdapter extends BaseAdapter{ private ArrayList<EditText> arrayList; private Context context; public mAdapter(Context context) { // TODO Auto-generated constructor stub this.context=context; arrayList=new ArrayList<EditText>(); } public ArrayList<String> getData(){ ArrayList<String> array=new ArrayList<String>(); for(EditText editText:arrayList){ String string=editText.getText().toString().trim(); if(!"".equals(string)){ array.add(string); } } return array; } public ArrayList<EditText> getEditTexts(){ return arrayList; } public void addItem(){ EditText editText=new EditText(context); arrayList.add(editText); this.notifyDataSetChanged(); editText.requestFocus(); Intent intent = new Intent(); intent.setAction("com.example.ylfw.ADD_ITEM"); context.sendBroadcast(intent); } @Override public int getCount() { // TODO Auto-generated method stub return arrayList.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arrayList.get(arg0); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub return arrayList.get(arg0); } } } 在主线程中通过 注册广播接收器 private void addItemReceiver(){ AddItemBroadcastReceiver smsReceiver=new AddItemBroadcastReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("com.example.ylfw.ADD_ITEM"); this.registerReceiver(smsReceiver, filter); } private class AddItemBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub Toast.makeText(arg0, "add item", Toast.LENGTH_SHORT).show(); //handler.sendMessage(new Message()); changeItemView(); } } 更改edittext样式 private void changeItemView(){ ArrayList<EditText> editTexts=lv_bt.getEditTexts(); EditText editText=editTexts.get(editTexts.size()-1); editText.setBackgroundResource(R.color.white); Drawable rightDrawable = getResources().getDrawable(R.drawable.icon_next); rightDrawable.setBounds(0, 0, rightDrawable.getMinimumWidth(), rightDrawable.getMinimumHeight()); editText.setCompoundDrawables(null, null, rightDrawable, null); editText.setFocusable(false); editText.setHint("选择"); } }
浙公网安备 33010602011771号