禁用单击具有条件的ListView行

时间:2018-01-05 08:54:59

标签: android listview

早上好, 我在第一个活动(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);
    }

请帮忙吗?

3 个答案:

答案 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;
}