ListView中包含EditText,修改并保存EditText中内容的处理办法

来源:互联网 发布:微信群营销软件 编辑:程序博客网 时间:2024/06/05 04:22
private static final int MSG_UPDATE_ITEM_TIME = 2;private List<Event> eventList = new ArrayList<>();private HashMap<Integer, String> eventMap = new HashMap<>();private Handler mHandler = new Handler(new Handler.Callback() {        @Override        public boolean handleMessage(Message msg) {            switch (msg.what) {                case MSG_UPDATE_ITEM_TIME:                    int position = msg.arg1;                    String time = eventMap.get(position);                    Event ev = eventList.get(position);                    ev.setStarttime(time);                    eventList.set(position, ev);                    break;            }            return false;        }    });    private class EventListAdapter extends BaseAdapter {        @Override        public int getCount() {            return eventList.size();        }        @Override        public Object getItem(int position) {            return eventList.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(final int position, View convertView, ViewGroup parent) {            final ViewHolder viewHolder;            if (convertView == null) {                viewHolder = new ViewHolder();                convertView = LayoutInflater.from(mContext).inflate(R.layout.event_list_item_layout, null);                viewHolder.relative_time = (RelativeLayout) convertView.findViewById(R.id.relative_time);                viewHolder.tv_event_time = (TextView) convertView.findViewById(R.id.tv_event_time);                viewHolder.iv_arrow = (ImageView) convertView.findViewById(R.id.iv_arrow);                viewHolder.et_event = (EditText) convertView.findViewById(R.id.et_event);                viewHolder.et_event.setTag(position);                viewHolder.et_event.addTextChangedListener(new MyTextChangeListener(viewHolder));                convertView.setTag(viewHolder);            } else {                viewHolder = (ViewHolder) convertView.getTag();                viewHolder.et_event.setTag(position);            }            Event event = eventList.get(position);            viewHolder.relative_time.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    viewHolder.iv_arrow.setBackgroundResource(R.drawable.selected);                    final ListPopupWindow mPopup = new ListPopupWindow(mContext);                    final String time[] = getResources().getStringArray(R.array.time);                    ArrayAdapter adapter = new ArrayAdapter(mContext, android.R.layout.simple_list_item_1, time);                    mPopup.setAdapter(adapter);                    mPopup.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);                    mPopup.setHeight(550);                    mPopup.setModal(true);                    mPopup.setOnDismissListener(new PopupWindow.OnDismissListener() {                        @Override                        public void onDismiss() {                            viewHolder.iv_arrow.setBackgroundResource(R.drawable.normal);                            eventMap.put(position, viewHolder.tv_event_time.getText().toString());                            Message msg = new Message();                            msg.what = MSG_UPDATE_ITEM_TIME;                            msg.arg1 = position;                            mHandler.sendMessage(msg);                        }                    });                    mPopup.setAnchorView(viewHolder.relative_time);                    mPopup.setOnItemClickListener(new AdapterView.OnItemClickListener() {                        @Override                        public void onItemClick(AdapterView parent, View view,                                                int position, long id) {                            viewHolder.tv_event_time.setText(time[position]);                            mPopup.dismiss();                            viewHolder.iv_arrow.setBackgroundResource(R.drawable.normal);                        }                    });                    mPopup.show();                }            });            viewHolder.tv_event_time.setText(event.getStarttime());            viewHolder.et_event.setText(event.getTitle());            return convertView;        }        private class ViewHolder {            RelativeLayout relative_time;            TextView tv_event_time;            ImageView iv_arrow;            EditText et_event;        }        private class MyTextChangeListener implements TextWatcher {            private ViewHolder holder;            public MyTextChangeListener(ViewHolder holder) {                this.holder = holder;            }            @Override            public void afterTextChanged(Editable s) {                int position = (Integer) holder.et_event.getTag();                Event event = eventList.get(position);                event.setTitle(s.toString());            }            @Override            public void beforeTextChanged(CharSequence s, int start, int count,                                          int after) {            }            @Override            public void onTextChanged(CharSequence s, int start, int before,                                      int count) {            }        }    }

event_list_item_layout.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:minHeight="60dp">    <RelativeLayout        android:id="@+id/relative_time"        android:layout_width="91.67dp"        android:layout_height="wrap_content">        <TextView            android:id="@+id/tv_event_time"            android:layout_width="50dp"            android:layout_height="19dp"            android:layout_centerInParent="true"            android:text="11:30"            android:textColor="#000000"            android:textSize="16sp" />        <ImageView            android:id="@+id/iv_arrow"            android:layout_width="10dp"            android:layout_height="5dp"            android:layout_alignParentRight="true"            android:layout_centerVertical="true"            android:background="@drawable/normal" />        <View            android:layout_width="match_parent"            android:layout_height="1dp"            android:layout_below="@id/tv_event_time"            android:layout_marginTop="15dp"            android:background="#C8C8C8" />    </RelativeLayout>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignBottom="@+id/relative_time"        android:layout_marginLeft="21.67dp"        android:layout_toRightOf="@+id/relative_time">        <EditText            android:id="@+id/et_event"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@null"            android:text="和朋友吃饭"            android:singleLine="true"            android:textColor="#000000"            android:textSize="16sp" />        <View            android:layout_width="match_parent"            android:layout_height="1dp"            android:layout_below="@id/et_event"            android:layout_marginTop="6.67dp"            android:background="#C8C8C8" />    </RelativeLayout></RelativeLayout>

R.array.time

<string-array name="time">        <item>1:00</item>        <item>1:30</item>        <item>2:00</item>        <item>2:30</item>        <item>3:00</item>        <item>3:30</item>        <item>4:00</item>        <item>4:30</item>        <item>5:00</item>        <item>5:30</item>        <item>6:00</item>        <item>6:30</item>        <item>7:00</item>        <item>7:30</item>        <item>8:00</item>        <item>8:30</item>        <item>9:00</item>        <item>9:30</item>        <item>10:00</item>        <item>10:30</item>        <item>11:00</item>        <item>11:30</item>        <item>12:00</item>        <item>12:30</item>        <item>13:00</item>        <item>13:30</item>        <item>14:00</item>        <item>14:30</item>        <item>15:00</item>        <item>15:30</item>        <item>16:00</item>        <item>16:30</item>        <item>17:00</item>        <item>17:30</item>        <item>18:00</item>        <item>18:30</item>        <item>19:00</item>        <item>19:30</item>        <item>20:00</item>        <item>20:30</item>        <item>21:00</item>        <item>21:30</item>        <item>22:00</item>        <item>22:30</item>        <item>23:00</item>        <item>23:30</item>        <item>24:00</item>    </string-array>
阅读全文
0 0
原创粉丝点击