我有一个ListView,当我检查一行时,单击“isSelected()”总是返回false,即使它先前已被选中,第二次检查它返回true ..需要单击ListView两次才能进行“isSelected()”工作......我在SO上看到了类似的问题,但没有一个提出的解决方案有效..
注意:我正在使用自定义ListAdapter,我正在侦听行单击,因此我无法在Listview上使用setOnItemClickListener
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
v.clearFocus();
if (v.isSelected())
{
正如我所建议的那样,我将一个setOnItemClickListener添加到Listview中,但是现在它没有检测到是否被选中,它总是返回false
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
Log.v("myApp", "onItemClick is " + position);
if (v.isSelected())
{
v.setSelected(false);
Log.v("MyApp", "fiend deselect row " + position);
v.setBackgroundResource(R.color.default_color);
} else {
Log.v("MyApp", "fiend click row " + position);
v.setSelected(true);
v.setBackgroundResource(R.color.pressed_color);
}
}
});
答案 0 :(得分:1)
设置listView.onItemClicklistener
而不是row.setOnClickListener
像这样:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id) {
}
});