写这篇文章主要是为了记录EditText,这个EditText的处理真的让人头疼啊。解决一个问题又出现一个问题,我花了3天的时间尽然没有解决,我也是醉了!!!
最终是使用RecyclerView,
先把最终的放在这里:然后写一下ListView 里面的包含EditText的两步处理
要注意的是setTag://注意tag一定要在最上面,就是要在设置监听前面
MainActivity:
package tech.androidstudio.simplecartdemorecyclerview;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.EditText;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView cart =(RecyclerView)findViewById(R.id.recyclerView); cart.setLayoutManager(new LinearLayoutManager(this)); ArrayList<Integer> cartDatas = new ArrayList<Integer>(); for (int i = 0; i < 100; i++) { cartDatas.add(i); } CartAdapter cartAdapter = new CartAdapter(cartDatas,this); cart.setAdapter(cartAdapter); } public class CartAdapter extends RecyclerView.Adapter<CartAdapter.CartViewHolder> implements TextView.OnEditorActionListener { private ArrayList<Integer> data = new ArrayList<Integer>(); private Context context; public CartAdapter(ArrayList<Integer> data,Context context) { this.data = data; this.context = context; } @Override public CartViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View ret = LayoutInflater.from(context).inflate(R.layout.item_simple,parent,false); return new CartViewHolder(ret); } @Override public void onBindViewHolder(CartViewHolder holder, int position) { holder.number.setTag(position); holder.number.setText(String.valueOf(data.get(position))); holder.number.setOnEditorActionListener(this); Log.d("kodulf","recyclerViewAdapter position"+position); } @Override public int getItemCount() { return data.size(); } @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { int position = (int) v.getTag(); int updatedInteger=Integer.parseInt(v.getText().toString()); data.set(position,updatedInteger); notifyDataSetChanged(); return false; } public class CartViewHolder extends RecyclerView.ViewHolder{ private EditText number;