早上好, 我在第一个活动(main_activity)中有一个ListView,当我点击一个选定的项目时,我有一个新的活动(details_activity)打开了更多的信息和细节,用户必须检查它,然后(details_activity)是关闭并返回到具有相同列表的main_activity。 我想禁用已经由用户检查过的listView行的单击。 我试图从main_activity到details_activity获取位置,以便在SQL中使用它来获取信息,它正在工作。 然后我把它发回去,在main_activity中我使用了这段代码:
mPrr = getSharedPreferences("reponse",Context.MODE_PRIVATE);
int IDs = mPrr.getInt("ID",-1);
String rep =mPrr.getString("reponse","");
if(IDs != -1) {
lst.getChildAt(IDs).setFocusable(false);
}
请帮忙吗?
答案 0 :(得分:0)
撰写setClickable(false)
代替setFocusable(false);
答案 1 :(得分:0)
在适配器中创建一个ArrayList,而不是每当执行单击该行时,如果位置不在列表中,则检查该行位置,而不是向数组列表添加位置,并执行单击其他任何操作。
private ArrayList<String> positionClicked = new ArrayList<>();
public void onBindViewHolder(final MyViewHolder holder, final int position) {
if (!positionClicked.contains(String.valueOf(position))) {
positionClicked.add(String.valueOf(position));
//perform Click
}else {
//
}
}
答案 2 :(得分:0)
创建自定义ArrayAdapter
,找到要禁用点击的项目的位置和@Overide isEnabled
方法
@Override
public boolean isEnabled(int position) {
if(position == positionYouWannaDisableClick)
return false;
return true;
}