自定义空间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("选择");
}
}

 

 

posted on 2016-07-06 16:45  Just_Boy  阅读(88)  评论(0)    收藏  举报