Android ListView的Item中带EditText的全输入和全取消输入
2017-01-04 13:25
459 查看
上代码:
1、MainActicity.class
2、布局文件:activity_main.xml
3、适配器:PriceAdapter.class
4、item布局文件:item_price_set.xml
1、MainActicity.class
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ ImageView imgMulti; ListView mList; TextView tvSave; String priceTitle[] ={"黄色S","黄色M","红色S","绿色XL","红色L",}; boolean isSelect = true; PriceAdapter mAdapter; List<PriceBean.ColorSizePrice> datas = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgMulti = (ImageView) findViewById(R.id.img_multi); tvSave = (TextView) findViewById(R.id.tv_save); imgMulti.setOnClickListener(this); tvSave.setOnClickListener(this); isSelect = false; imgMulti.setImageResource(R.mipmap.ic_select_up); mList = (ListView) findViewById(R.id.list); mAdapter = new PriceAdapter(MainActivity.this,priceTitle); mList.setAdapter(mAdapter); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.img_multi: if(isSelect){ isSelect = false; imgMulti.setImageResource(R.mipmap.ic_select_up); mAdapter.cancleAllSame(); Toast.makeText(MainActivity.this,"取消了",Toast.LENGTH_SHORT).show(); }else { isSelect = true; imgMulti.setImageResource(R.mipmap.ic_select_down); mAdapter.setAllSame(); Toast.makeText(MainActivity.this,"选中了",Toast.LENGTH_SHORT).show(); } mAdapter.notifyDataSetChanged(); break; case R.id.tv_save: break; } } }
2、布局文件:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.edit.multimodifile.MainActivity" android:orientation="vertical" android:background="#ffffff"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center|left" android:padding="10dp"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="价格设置" android:textColor="#333333" android:textSize="15sp"/> <ImageView android:id="@+id/img_multi" android:layout_width="20dp" android:layout_height="20dp" android:src="@mipmap/ic_select_up" android:layout_marginRight="10dp" android:layout_marginLeft="15dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全部相同" android:textColor="#333333" android:textSize="15sp"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#e0e0e0"/> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <TextView android:id="@+id/tv_save" android:layout_width="match_parent" android:layout_height="50dp" android:textSize="15sp" android:textColor="#ffffff" android:text="保存" android:background="#f41212" android:gravity="center"/> </LinearLayout>
3、适配器:PriceAdapter.class
public class PriceAdapter extends BaseAdapter { Context context; String priceTitle[]; ViewHolder holder = null; String unitPrice; private SparseArray<String> sparseArray = new SparseArray<>();//SparseArray和HashMap用法一样 // private HashMap<Integer,String> sparseArray = new HashMap<>(); private int curPos; private Runnable runnable; private Handler handler; private boolean normalMode = true; public PriceAdapter(Context context, String priceTitle[]) { this.context = context; this.priceTitle = priceTitle; } @Override public int getCount() { return priceTitle.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View view, ViewGroup viewGroup) { view = LayoutInflater.from(context).inflate(R.layout.item_price_set, null); holder = new ViewHolder(); initView(view, holder); holder.tvColorSize.setText(priceTitle[position]); holder.editUnitPrice.setText(sparseArray.get(position)); Log.e("getView", position + "---" + sparseArray.get(position)); holder.editUnitPrice.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { curPos = position; sparseArray.put(position, s.toString()); unitPrice = s.toString(); if (runnable == null) { runnable = new Runnable() { @Override public void run() { if (!normalMode) { putSameValue(position); } notifyDataSetChanged(); } }; } if (handler == null) { handler = new Handler(); } handler.removeCallbacks(runnable); handler.postDelayed(runnable, 1000); } @Override public void afterTextChanged(Editable s) { Toast.makeText(context, "" + unitPrice, Toast.LENGTH_SHORT).show(); } }); return view; } private void initView(View view, ViewHolder holder) { holder.tvColorSize = (TextView) view.findViewById(R.id.tv_color_size); holder.editUnitPrice = (EditText) view.findViewById(R.id.edit_unit_price); view.setTag(holder); } class ViewHolder { TextView tvColorSize; EditText editUnitPrice; } public void setAllSame() { normalMode = false; for (int i = 0; i < priceTitle.length; i++) { sparseArray.put(i, unitPrice); } } private void putSameValue(int curPos) { for (int i = 0; i < priceTitle.length; i++) { if (i != curPos) { sparseArray.put(i, unitPrice); } } } public void cancleAllSame() { normalMode = true; for (int i = 0; i < priceTitle.length; i++) { if (i == curPos) { sparseArray.put(i, unitPrice); } else { sparseArray.put(i, ""); } } } }
4、item布局文件:item_price_set.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="45dp" android:background="#ffffff" android:gravity="center|left" android:orientation="horizontal" android:layout_marginLeft="15dp" android:layout_marginRight="15dp"> <TextView android:id="@+id/tv_color_size" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:textColor="#333333" android:textSize="14sp" android:text="" /> <EditText android:id="@+id/edit_unit_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:textCursorDrawable="@drawable/color_cursor" android:textSize="14sp" android:textColorHint="#cccccc" android:textColor="#333333" android:hint="请输入" android:layout_weight="1" android:background="@null" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#333333" android:textSize="14sp" android:text="元" android:layout_marginLeft="10dp" /> </LinearLayout> <!--<ImageView style="@style/horizontal_line" android:layout_marginRight="@dimen/height_15" android:layout_marginLeft="@dimen/height_15"/>--> </LinearLayout>
相关文章推荐
- Android关于ListView中使用EditText获取输入数据和刷新ListView数据的解决方案
- [问题]Android listView item edittext 不能调用软键盘输入法
- Android-------ListView列表中获取EditText输入的值
- ListView的listitem为EditText无法输入内容问题
- Android-------ListView列表中获取EditText输入的值
- [问题]Android listView item edittext 不能调用软键盘输入法
- 学习笔记-Android之ListView随EditText输入内容动态改变
- Android中ListView中item的EditText控件监听剩余字数
- 安卓Android控件ListView获取item中EditText值
- android ListView的item含有多个EditText导致错位
- ListView中item点击事件和item中radiobutton的点击editText输入焦点问题
- Android LinearLayout+ScrollView 模仿ListView效果,是为了使每个Item的EditText无法失去焦点
- Android开发之旅一Listview的item中有edittext
- Android-------ListView列表中获取EditText输入的值
- Android ListView的Item中含有EditText,获取EditText里面的值并且刷新ListView值不改变
- Android控件ListView获取item中EditText值
- Android ListView的Item中含有EditText,获取EditText里面的值并且刷新ListView值不改变
- Android ListView的Item中含有EditText,获取EditText里面的值并且刷新ListView值不改变
- Android ListView的Item中含有EditText,获取EditText里面的值并且刷新ListView值不改变
- Android TextWatcher监控EditText中的输入内容并限制其输入字符个数