如何在具有多个选择的自定义列表视图中获取选中的项目 ID(自定义 ID,而不是所选项目的位置或名称 - 在我的情况下,我需要检索订单 ID)。我有来自 json 的订单名称和订单 ID,并将其填充在自定义列表视图中,在自定义列表视图中,我有文本视图和复选框,但如何获取所选/选中订单的 Orderid。
当我单击按钮时我有一个按钮,我需要检索 id 而不是名称或职位,在我的情况下,我需要检索订单 id
如何在具有多个选择的自定义列表视图中获取选中的项目 ID(自定义 ID,而不是所选项目的位置或名称 - 在我的情况下,我需要检索订单 ID)。我有来自 json 的订单名称和订单 ID,并将其填充在自定义列表视图中,在自定义列表视图中,我有文本视图和复选框,但如何获取所选/选中订单的 Orderid。
当我单击按钮时我有一个按钮,我需要检索 id 而不是名称或职位,在我的情况下,我需要检索订单 id
你只需要打电话ListView.getCheckedItemIds()
。它将返回一个带有所有已检查 ID 的 long[]。还有ListView.getCheckedItemPositions()
一个会给你所有选中的位置。
确保您设置或设置视图ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)
(onCreate()
或布局 xml)。
要获取选中的值,您只需执行以下操作:
SparseBooleanArray checked = mListView.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++) {
if (checked.valueAt(i)) {
int pos = checked.keyAt(i);
Object o = mListView.getAdapter().getItem(pos);
// do something with your item. print it, cast it, add it to a list, whatever..
}
我通过使用以下代码解决并获得了 OrderId,这对我有用,我可以检索我传递给列表的自定义 ORDERID
int isSelectedOrderNumber=0;
mOpenOrdersSelected = new ArrayList<OpenOrders>();
StringBuffer sb = new StringBuffer();
Iterator<OpenOrders> it = mOpenOrders.iterator();
while(it.hasNext())
{
OpenOrders objOpenOrders = it.next();
//Do something with objOpenOrders
if (objOpenOrders.isSelected()) {
isSelectedOrderNumber++;
mOpenOrdersSelected.add(new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName()));
sb.append(objOpenOrders.getOrderID());
sb.append(",");
}
}
//Below Condition Will Check the selected Items With parameter passed "mMAX_ORDERS_TOBEPICKED"
if(isSelectedOrderNumber<1){
ShowErrorDialog("Please Select atleast One order");
return;
}
if(isSelectedOrderNumber>mMAX_ORDERS_TOBEPICKED){
ShowErrorDialog(" Select Maximum of "+mMAX_ORDERS_TOBEPICKED+ " Orders only to process");
return;
}
Log.d(MainActivity.class.getSimpleName(), "cheked Order Items: " +sb);
Toast.makeText(getApplicationContext(), "cheked Order Items id:" +sb, Toast.LENGTH_LONG).show();
Jerry,将您的订单对象设置为具有选择事件 [CheckBox, TextView, Row view] 的视图的标签,当用户选择项目时,您可以从标签中获取选定的订单对象,并且您可以获取该对象的任何成员(订单)。例如。
订单对象
Order {
int id;
String name;
boolean isSelected;
//add getters and setters
}
void getview(...) {
View v = //inflate view
CheckBox cb = (CheckBox) v.findViewById(..);
cb.setTag(yourlist.get(position));
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
((Order) buttonView.getTag()).setSelected(isChecked);
}
});
}