Я бы потребовал сумму выборов 1, но это все равно
def weightedChoice(choices):
# Safety check, you can remove it
for c,w in choices:
assert w >= 0
tmp = random.uniform(0, sum(c for c,w in choices))
for choice,weight in choices:
if tmp < weight:
return choice
else:
tmp -= weight
raise ValueError('Negative values in input')
Я нашел простой способ решить проблему. Я добавил setId
к своему getView
. Затем я могу использовать getId
для моего setOnItemClickListener
getView () в Adapter
convertView.setId(mItemList.get(position).getItemId());
convertView.setTag(holder);
setOnItemClickListener () в классе Item
lvItem.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(),"Item ID : " + view.getId(),Toast.LENGTH_SHORT).show();
}
});
В getView
удалите convertView.setTag(mItemList.get(position).getItemId());
для кликмена, добавьте cardview
или linearlayout
из вашего макета элемента в viewholder
и установите onclicklistener
на что
holder.cardview.setTag(mItemList.get(position).getItemId());
holder.cardview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int id =(int)view.getTag();
}
}