2013-09-10 3 views
0

У меня есть listview с пользовательским адаптером. Каждый элемент в списке имеет изображение, текст и флажок.установить флажок как не редактируемый в listview с пользовательским адаптером

Мое требование состоит в том, что если значение текстового представления в определенном элементе является «xyz», я должен установить этот флажок как незаменимый (флажок всегда должен быть проверен, и пользователю не разрешено его отменить).

Я пробовал, установка, setClickable(false) и setEnabled(false), но оба не работал. Пожалуйста, обратите внимание на приведенный ниже код ...

`

@Override 
    public View getView(final int position, View convertView, ViewGroup root) { 
     View view = convertView; 

     if (view == null) 
      view = inflater.inflate(R.layout.item_favorite_list, null); 

     view.setTag(teams.get(position).get("name")); 


     ((TextView) view.findViewById(R.id.name)).setText(teams.get(
       position).get("name")); 

     String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
     Log.d(Const.TAG, "Name = "+name); 


     CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkBox); 
     checkBox.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       CheckBox checkBox = (CheckBox) view; 
       // do something here.. 
     }); 

     if (favoriteTeams.contains(teams.get(position).get("name"))) 
      checkBox.setChecked(true); 
     else 
      checkBox.setChecked(false); 

        //Need to set the checkBox to non-editable 
     if(teams.get(position).get("name").equalsIgnoreCase("xyz")) 
     { 
      Log.d(Const.TAG, "Position = "+position); 
      Log.d(Const.TAG, "Team = "+teams.get(position).get("name").toString()); 
      checkBox.setClickable(false); 
      checkBox.setEnabled(false); 
     } 



     return view; 
    } 
} 

`

+0

Я попытался установить весь вид (элемент списка) как интерактивный, и это сработало. Теперь флажок не может быть нажат. Но, когда я просматриваю listview, другие элементы в listview также устанавливаются с тем же свойством –

ответ

0

Okie, так вот что я сделал ..

` 
//if(teams.get(position).get("name").equalsIgnoreCase("xyz")) 
      if(view.getTag().toString().equalsIgnoreCase("xyz")) 
      { 

       Log.d(Const.TAG, "View is Clickable = "+view.isClickable());  
       view.setBackgroundColor(Color.BLUE); 
       checkBox.setClickable(false); 
      } 
      else 
      { 
       view.setClickable(false); 
       view.setBackgroundColor(Color.WHITE); 
       checkBox.setClickable(true); 

      } 
` 

И откровенно говоря, я не уверен, если это лучший подход, но это сработало. Если у кого-то есть лучший подход, пожалуйста, разделите.

0

ли вам не нужен onCheckedChangeListener?

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 

    } 
} 
0

вы могли бы попробовать checkBox.setOnClickListener(null);

Смежные вопросы