Java 为什么我的listview总是从列表中删除最后一个视图
我正在向数组和适配器添加值,当我删除特定的项目表单listview时,它会从arraylist中完全删除,但它会删除最后一个视图,如果我有Java 为什么我的listview总是从列表中删除最后一个视图,java,android,listview,Java,Android,Listview,我正在向数组和适配器添加值,当我删除特定的项目表单listview时,它会从arraylist中完全删除,但它会删除最后一个视图,如果我有 a b c d e 当我删除b时…e视图就消失了为什么…然后列表就消失了 a b c d 我从上两周开始做这件事,但我找不到这件事中的错误,请帮助我。 请 请 请 请 公共类主页扩展了AppCompative活动{ 按钮addMoreBtn,checkoutBtn; 菜豆; //自定义适配器自定义适配器; ArrayList医学医嘱列表; //医嘱列表1
a
b
c
d
e
当我删除b时…e视图就消失了为什么…然后列表就消失了
a
b
c
d
我从上两周开始做这件事,但我找不到这件事中的错误,请帮助我。
请
请
请
请
公共类主页扩展了AppCompative活动{
按钮addMoreBtn,checkoutBtn;
菜豆;
//自定义适配器自定义适配器;
ArrayList医学医嘱列表;
//医嘱列表1;
mydbdb;
列表视图列表视图;
国际客户识别码;
EditText med_nameET,med_Potency Yet,med_qtyET;
图像按钮增加数量,减少数量;
HomeListViewHandler HomeListViewHandler;
专用阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
字符串session\u exp=SessionUtil.getSessionExpire(Home.this);
if(常量.日志记录)
Toast.makeText(getApplicationContext(),“Session Exp=“+Session_Exp+“Today Date”+new DateAndTimeUtil().getCurrentDate(),Toast.LENGTH_LONG).show();
//30天会话过期检查器
if(session_exp.matches(new DateAndTimeUtil().getCurrentDate())){
SessionUtil.setSignout(Home.this);
Toast.makeText(getApplicationContext(),“由于超过30天的限制,会话已过期”,Toast.LENGTH_LONG).show();
意向意向=新意向(Home.this,SignIn.class);
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK | intent.FLAG_ACTIVITY_CLEAR_TASK);
星触觉(意向);
}
//首先检查用户是否登录
else if(SessionUtil.isLoggedIn(Home.this)){
工具栏工具栏=(工具栏)findViewById(R.id.easymed\u工具栏);
设置支持操作栏(工具栏);
setTitle(getResources().getString(R.string.home));
getDrawer(这个,工具栏);
addMoreBtn=(按钮)findViewById(R.id.addtoList);
checkoutBtn=(按钮)findViewById(R.id.checkoutBtn);
listView=(listView)findViewById(R.id.medListView);
med_nameET=(EditText)findViewById(R.id.frstSingleItemET);
med_Potential=(EditText)findViewById(R.id.scndSingleItemET);
med_qtyt=(EditText)findViewById(R.id.thrdSingleItemTV);
increaseQty=(ImageButton)findViewById(R.id.increaceImgBtn);
decreaseQty=(ImageButton)findViewById(R.id.decreaseImgBtn);
medOrderList=新的ArrayList();
//medOrderList1=新的ArrayList();
cust_id=SessionUtil.getCustomerId(Home.this);
medicineBean=新medicineBean();
db=新的MyDBHandler(Home.this);
//customAdapter=新的customAdapter();
adapter=新的CustomAdapter(此,0,medOrderList);
setAdapter(适配器);
increaseQty.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(常量.日志记录)
System.out.println(“增量Btn按下”);
int val=Integer.parseInt(med_qtyt.getText().toString());
val=val+1;
字符串str=Integer.toString(val);
med_qtyt.setText(str);
}
});
decreaseQty.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
int val=Integer.parseInt(med_qtyt.getText().toString());
如果(val>0){
val=val-1;
字符串str=Integer.toString(val);
med_qtyt.setText(str);
}
}
});
checkoutBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//在本地数据库中添加新药
整数计数=0;
对于(int i=0;i0)
{
cursor.moveToNext();
字符串qtyInDB=cursor.getString(0);
int qtyInDBInt=Integer.parseInt(qtyInDB);
int getQtyFromET=Integer.parseInt(qtyInDB);
int resultOfSumQty=getQtyFromET+qtyInDBInt;
数据库更新数量(客户id、名称、效力、结果消耗数量);
}
//添加新药
else if(db.addUsersMed(客户id、名称、效力、数量)!=-1){
medicineBean.设置客户id(客户id);
medicineBean.setMediceneName(名称);
药豆.集药持久性(效价);
medicineBean.SetMedicEnqty(数量);
医疗医嘱列表集(i,medicineBean);
public class Home extends AppCompatActivity {
Button addMoreBtn,checkoutBtn;
MedicineBean medicineBean;
//CustomAdapter customAdapter;
ArrayList<MedicineBean> medOrderList;
//<MedicineBean> medOrderList1;
MyDBHandler db;
ListView listView;
int cust_id;
EditText med_nameET, med_potencyET, med_qtyET;
ImageButton increaseQty,decreaseQty;
HomeListViewHandler homeListViewHandler;
private ArrayAdapter<MedicineBean> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
String session_exp = SessionUtil.getSessionExpire(Home.this);
if(Constants.LOGGING)
Toast.makeText(getApplicationContext(),"Session Exp = "+session_exp+" Today Date "+new DateAndTimeUtil().getCurrentDate(),Toast.LENGTH_LONG).show();
//30 days session expire checker
if(session_exp.matches(new DateAndTimeUtil().getCurrentDate())){
SessionUtil.setSignout(Home.this);
Toast.makeText(getApplicationContext(),"Session has been expired due to 30 days limit exceeded",Toast.LENGTH_LONG).show();
Intent intent = new Intent(Home.this, SignIn.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
//first check, Is user LOGGED IN or not
else if(SessionUtil.isLoggedIn(Home.this)) {
Toolbar toolBar = (Toolbar) findViewById(R.id.easymed_toolbar);
setSupportActionBar(toolBar);
toolBar.setTitle(getResources().getString(R.string.home));
DrawerUtil.getDrawer(this, toolBar);
addMoreBtn = (Button) findViewById(R.id.addtoList);
checkoutBtn = (Button) findViewById(R.id.checkOutBtn);
listView = (ListView) findViewById(R.id.medListView);
med_nameET = (EditText) findViewById(R.id.frstSingleItemET);
med_potencyET = (EditText) findViewById(R.id.scndSingleItemET);
med_qtyET = (EditText) findViewById(R.id.thrdSingleItemTV);
increaseQty=(ImageButton) findViewById(R.id.increaceImgBtn);
decreaseQty=(ImageButton) findViewById(R.id.decreaseImgBtn) ;
medOrderList = new ArrayList<MedicineBean>();
//medOrderList1 = new ArrayList<MedicineBean>();
cust_id = SessionUtil.getCustomerId(Home.this);
medicineBean = new MedicineBean();
db = new MyDBHandler(Home.this);
//customAdapter = new CustomAdapter();
adapter=new CustomAdapter(this,0,medOrderList);
listView.setAdapter(adapter);
increaseQty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(Constants.LOGGING)
System.out.println("Increment Btn pressed");
int val = Integer.parseInt(med_qtyET .getText().toString());
val=val+1;
String str = Integer.toString(val);
med_qtyET .setText(str);
}
});
decreaseQty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int val = Integer.parseInt(med_qtyET .getText().toString());
if(val>0) {
val = val-1;
String str = Integer.toString(val);
med_qtyET.setText(str);
}
}
});
checkoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//add new medicines in local DB
int count = 0;
for (int i = 0; i < medOrderList.size(); i++) {
String name = medOrderList.get(i).getMediceneName();
String potency=medOrderList.get(i).getMedicenePotency();
String qty = medOrderList.get(i).getMediceneQty();
if (!name.matches("") && !potency.matches("") && !qty.matches("")) {
//Check if medicine with same potency available in DB then quantity of medicine add
Cursor cursor = db.getMedByNameAndPotency(cust_id,name,potency);
if(cursor.getCount()>0)
{
cursor.moveToNext();
String qtyInDB = cursor.getString(0);
int qtyInDBInt = Integer.parseInt(qtyInDB);
int getQtyFromET = Integer.parseInt(qtyInDB);
int resultOfSumQty = getQtyFromET + qtyInDBInt;
db.updateMedQTY(cust_id,name,potency,resultOfSumQty);
}
//add new medicine
else if (db.addUsersMed(cust_id, name, potency, qty) != -1) {
medicineBean.setCust_id(cust_id);
medicineBean.setMediceneName(name);
medicineBean.setMedicenePotency(potency);
medicineBean.setMediceneQty(qty);
medOrderList.set(i, medicineBean);
//Log.i(Constants.TAG,medOrderList.get(i).toString());
count++;
}
}
}
if (count > 0) {
Toast.makeText(getApplicationContext(), "Medicines added successfully.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Medicines not added into cart.", Toast.LENGTH_SHORT).show();
}
Intent intent = new Intent(Home.this, Cart.class);
startActivity(intent);
}
});
addMoreBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!med_nameET.getText().toString().matches("") && !med_potencyET.getText().toString().matches("")
&& !med_qtyET.getText().toString().matches("0")) {
medOrderList.add(new MedicineBean(cust_id,med_nameET.getText().toString(),med_potencyET.getText().toString(),med_qtyET.getText().toString()));
med_nameET.setText("");
med_potencyET.setText("");
med_qtyET.setText("0");
adapter.notifyDataSetChanged();
Log.d("data",String.valueOf(medOrderList.size()));
}
else
{
Toast.makeText(getApplicationContext(), "Please fill all empty fields then press \'Add More\' button", Toast.LENGTH_SHORT).show();
}
}
});
}
else
{
Intent intent = new Intent(Home.this, SignIn.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
private class ListViewHolder{
EditText medET;
EditText potencyET;
EditText incrOrDecET;
ImageButton cancelBtn;
}
class CustomAdapter extends ArrayAdapter<MedicineBean> {
private Context context;
private List<MedicineBean> medicineBeanList;
ListViewHolder listViewHolder;
public CustomAdapter(Context context, int resource, ArrayList<MedicineBean> objects) {
super(context, resource, objects);
this.context = context;
this.medicineBeanList = objects;
}
@Override
public int getCount() {
return medicineBeanList.size();
}
@Override
public MedicineBean getItem(int i) {
return medicineBeanList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
if(view==null) {
view = getLayoutInflater().inflate(R.layout.single_item, null);
listViewHolder = new ListViewHolder();
listViewHolder.medET = (EditText) view.findViewById(R.id.mediceNameInHomeList);
listViewHolder.potencyET = (EditText) view.findViewById(R.id.medicePotencyInHomeList);
listViewHolder.incrOrDecET = (EditText) view.findViewById(R.id.mediceQtyInHomeList);
listViewHolder.cancelBtn = (ImageButton) findViewById(R.id.homeCnclBtn);
listViewHolder.medET.setEnabled(false);
listViewHolder.potencyET.setEnabled(false);
listViewHolder.incrOrDecET.setEnabled(false);
view.setTag(listViewHolder);
listViewHolder.medET.setText(medicineBeanList.get(i).getMediceneName());
listViewHolder.potencyET.setText(medicineBeanList.get(i).getMedicenePotency());
listViewHolder.incrOrDecET.setText(medicineBeanList.get(i).getMediceneQty());
listViewHolder.cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
adapter.remove(medicineBeanList.get(i));
adapter.notifyDataSetChanged();
/*for (int pos = 0; pos < medOrderList.size(); pos++)
{
listViewHolder.medET.setText(medOrderList.get(pos).getMediceneName());
listViewHolder.potencyET.setText(medOrderList.get(pos).getMedicenePotency());
listViewHolder.incrOrDecET.setText(medOrderList.get(pos).getMediceneQty());
//adapter.add(new MedicineBean(medOrderList.get(pos).getCust_id(),medOrderList.get(pos).getMediceneName(),medOrderList.get(pos).getMedicenePotency(),medOrderList.get(pos).getMediceneQty()));
}*/
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
return view;
}
}
}
class CustomAdapter extends ArrayAdapter<MedicineBean> {
private Context context;
private List<MedicineBean> medicineBeanList;
ListViewHolder listViewHolder;
public CustomAdapter(Context context, int resource, ArrayList<MedicineBean> objects) {
super(context, resource, objects);
this.context = context;
this.medicineBeanList = objects;
}
@Override
public int getCount() {
return medicineBeanList.size();
}
@Override
public MedicineBean getItem(int i) {
return medicineBeanList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
if(view==null) {
view = getLayoutInflater().inflate(R.layout.single_item, null);
listViewHolder = new ListViewHolder();
listViewHolder.medET = (EditText) view.findViewById(R.id.mediceNameInHomeList);
listViewHolder.potencyET = (EditText) view.findViewById(R.id.medicePotencyInHomeList);
listViewHolder.incrOrDecET = (EditText) view.findViewById(R.id.mediceQtyInHomeList);
listViewHolder.cancelBtn = (ImageButton) findViewById(R.id.homeCnclBtn);
listViewHolder.medET.setEnabled(false);
listViewHolder.potencyET.setEnabled(false);
listViewHolder.incrOrDecET.setEnabled(false);
view.setTag(listViewHolder);
//Add this line
listViewHolder.cancelBtn.setTag(i);
listViewHolder.medET.setText(medicineBeanList.get(i).getMediceneName());
listViewHolder.potencyET.setText(medicineBeanList.get(i).getMedicenePotency());
listViewHolder.incrOrDecET.setText(medicineBeanList.get(i).getMediceneQty());
listViewHolder.cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
//add this line
int selectedPos = (int) v.getTag();
//Replace this
//adapter.remove(medicineBeanList.get(i));
//with this
adapter.remove(medicineBeanList.get(selectedPos));
adapter.notifyDataSetChanged();
/*for (int pos = 0; pos < medOrderList.size(); pos++)
{
listViewHolder.medET.setText(medOrderList.get(pos).getMediceneName());
listViewHolder.potencyET.setText(medOrderList.get(pos).getMedicenePotency());
listViewHolder.incrOrDecET.setText(medOrderList.get(pos).getMediceneQty());
//adapter.add(new MedicineBean(medOrderList.get(pos).getCust_id(),medOrderList.get(pos).getMediceneName(),medOrderList.get(pos).getMedicenePotency(),medOrderList.get(pos).getMediceneQty()));
}*/
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
return view;
}
}
listViewHolder.cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String item = medicineBeanList.get(i);
medicineBeanList.remove(position);
adapter.notifyDataSetChanged();}
catch (Exception e) {
e.printStackTrace();
}
}
});
listView.setVisibility(ListView.VISIBLE);
adapter = new CustomAdapter(this,0,medOrderList);
listView.setAdapter(adapter);