【发布时间】:2016-12-05 11:00:34
【问题描述】:
实际上,当我触摸列表视图时,我有一个列表视图,当我选中复选框并按 OK 时,我会弹出带有复选框的窗口,然后对话框关闭,当我再次触摸列表视图时,选中的行位置将改变背景颜色并存储到数据库中。实际上问题是当我再次选择不同的项目位置并检查并按 OK 并再次触摸列表视图而不是输入检查的位置进入数据库时,先前检查的位置也与当前检查的位置一起进入数据库。所以我需要在列表视图看到选中的位置之前获得以前的位置和清除位置。使其只进入当前位置。
我的活动
listView1.setOnTouchListener(new AdapterView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
newListitems2.clear();
newListitems2.addAll(itemsList1);
dialog = new Dialog(PendingOrdersActitvity.this);
dialog.setContentView(R.layout.itembumping);
dialog.show();
//listView1.setTag(position);
list1 = (ListView) dialog.findViewById(R.id.list1);
ItemBumpingAdapter adapter2 = new ItemBumpingAdapter(PendingOrdersActitvity.this, newListitems2);
list1.setAdapter(adapter2);
Button okButton = (Button) dialog.findViewById(R.id.ok1);
okButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
Button cancelButton = (Button) dialog.findViewById(R.id.Cancel1);
cancelButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
}
return true;
}
});
实现代码:
listView1.setOnTouchListener(new AdapterView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
newListitems2.clear();
newListitems2.addAll(itemsList1);
dialog = new Dialog(PendingOrdersActitvity.this);
dialog.setContentView(R.layout.itembumping);
dialog.show();
list1=(ListView )dialog.findViewById(R.id.list1);
ItemBumpingAdapter adapter2 = new ItemBumpingAdapter(PendingOrdersActitvity.this,newListitems2);
list1.setAdapter(adapter2);
Button okButton = (Button)dialog.findViewById(R.id.ok1);
okButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Connection con1 = DbHandler.dbConnection();
try{
PreparedStatement stmt1 = con1
.prepareStatement("Select Line_No, ItemName,DeleteFlag from PendingOrders_Dtl where Inv_No=? ");
stmt1.setString(1,invNo);
ResultSet rsSetup1 = stmt1.executeQuery();
if (rsSetup1.next()) {
ItemsBean bean1 = new ItemsBean();
bean1.setLinenum(rsSetup1.getInt("Line_No"));
bean1.setProdnum(rsSetup1.getInt("ItemName"));
bean1.setDeleteFlag(rsSetup1.getInt("DeleteFlag"));
disablelist.add(bean1);
}
CustomAdapter adapter1 = new CustomAdapter(PendingOrdersActitvity.this, itemsList1);
for(int i=0;i<itemsList1.size();i++)
{
for(int j=0;j<disablelist.size();j++)
{
if(itemsList1.get(i).getProdnum()==disablelist.get(j).getProdnum())
{
itemsList1.get(i).setSelection(true);
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
});
【问题讨论】:
-
尝试添加“list1.clearChoices();”在创建适配器 2 之前。希望有所帮助!
-
我会努力的,谢谢
-
对不起!误解了你的问题。您选中的是 CheckBox,而不是 ListItem。因此尝试添加:“for(int i=0; i
-
你能在代码中实现这个吗
-
表示请在我的代码中编辑