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

xiaoxiao2021-02-28  104

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>
转载请注明原文地址: https://www.6miu.com/read-69544.html

最新回复(0)