問題:
小弟寫了一個ListView,ListView的item中有一個是TextView。當我點擊TextView的時候,會彈出一個PopupWindow。PopupWindow中是一個ListView。
當點擊PopupWindow中的ListView的時候,需要把 PopupWindow中的ListView的值傳給TextView。問題是,我debug,看見了TextView的值明明改變了,但是在頁面中的TextView的值卻沒有改變
代碼:
ListView中的適配器
public class OperatorLogItem extends BaseAdapter {
private Context mcontext;
private LayoutInflater mInflater;
private TextView tv_operator_mark;
private PopupWindow pw_operator_mark; // 彈框
private List<String> mOperatorMarkList = new ArrayList<>(); //彈出的窗體的數(shù)據(jù)
private AddItemListView mAddItemListView;
private AddItemListViewAdapter mAddItemListViewAdapter;
Spinner mSpOperatorMark ,mSpOperatorRecord,mSpOperatorSignature;
EditText etOperatorAllTime, etOperatorBeginTime, etOperatorOverTime,etOperatorRemark;
public OperatorLogItem(Context context) {
super();
this.mcontext = context;
this.mInflater = LayoutInflater.from(mcontext);
// 因為多個OperatorLogItem 共用一個 ListView,所以只初始化一次。
initTvClickPopupWindowData(mOperatorMarkList);
mAddItemListView = new AddItemListView(mcontext);
mAddItemListViewAdapter = new AddItemListViewAdapter(mcontext,mOperatorMarkList);
mAddItemListView.setAdapter(mAddItemListViewAdapter);
}
@Override
public int getCount() {
return 8;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = mInflater.inflate(R.layout.lv_item_log,null);
// 修改部分
tv_operator_mark = (TextView) v.findViewById(R.id.tv_operator_mark);
tv_operator_mark.setText(mOperatorMarkList.get(0));
initTvClickPopupWindow(tv_operator_mark);
// mSpOperatorMark = (Spinner) v.findViewById(R.id.sp_operator_mark);
mSpOperatorRecord = (Spinner) v.findViewById(R.id.sp_operator_record);
mSpOperatorSignature = (Spinner) v.findViewById(R.id.sp_operator_signature);
// mSpOperatorMark.setAdapter(ArrayAdapter.createFromResource(MainActivity.this,R.array.operatorLogMark,R.layout.multiline_spinner_dropdown_item));
mSpOperatorRecord.setAdapter(ArrayAdapter.createFromResource(mcontext,R.array.operatorLogRecord,R.layout.multiline_spinner_dropdown_item));
mSpOperatorSignature.setAdapter(ArrayAdapter.createFromResource(mcontext,R.array.operatorLogSignature,R.layout.multiline_spinner_dropdown_item));
etOperatorAllTime = (EditText) v.findViewById(R.id.et_operator_all_time);
etOperatorBeginTime = (EditText) v.findViewById(R.id.et_operator_begin_time);
etOperatorOverTime = (EditText) v.findViewById(R.id.et_operator_over_time);
etOperatorRemark = (EditText) v.findViewById(R.id.et_operator_remark);
return v;
}
//初始化彈出窗體中的數(shù)據(jù)
private void initTvClickPopupWindowData(List<String> list) {
String [] arrays = mcontext.getResources().getStringArray(R.array.operatorLogMark);
if(arrays != null) {
for (String s : arrays) {
list.add(s);
}
}
}
//初始化點擊TextView 彈出窗體
private void initTvClickPopupWindow(TextView tv) {
//初始化窗體
tv.post(new Runnable() {
@Override
public void run() {
pw_operator_mark = new PopupWindow(mAddItemListView, RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT,true);
pw_operator_mark.setTouchable(true);
pw_operator_mark.setOutsideTouchable(true);
// 這句話是必須寫的,雖然不知道為什么??!
pw_operator_mark.setBackgroundDrawable(new BitmapDrawable(mcontext.getResources(), (Bitmap) null));
}
});
// 點擊彈出窗體
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pw_operator_mark.showAsDropDown(v);
}
});
}
PopupWindow中ListView的適配器
class AddItemListViewAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;
private List<String> data;
public AddItemListViewAdapter(Context mContext, List<String> data) {
this.mContext = mContext;
mInflater = LayoutInflater.from(mContext);
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
ViewHolder vh;
vh = new ViewHolder();
view = mInflater.inflate(R.layout.item, null);
vh.tvContent = (TextView) view.findViewById(R.id.tv_content);
vh.tvDelete = (TextView) view.findViewById(R.id.tv_delete);
vh.tvContent.setText(data.get(position));
vh.tvDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
data.remove(position);
notifyDataSetChanged();
}
});
vh.tvContent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv_operator_mark.setText(data.get(position));
pw_operator_mark.dismiss();
}
});
return view;
}
}
static class ViewHolder {
TextView tvContent;
TextView tvDelete;
}北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。