2014-01-06 37 views
1

我使用下面給出的適配器。我在數字中解釋。數字僅供參考。 我使用textview和複選框爲單行。 textviews應該出現和複選框initially.after隱藏按鈕按下複選框應該出現和TextView中保持same.please幫助me.thanks提前..Android隱藏並顯示在按鈕點擊custome listview中的複選框

enter image description here enter image description here

public class Adapter extends ArrayAdapter<SectionsModel>{ 

    private ArrayList<SectionsModel> list; 
    public Adapter(Context context, int resource, ArrayList<SectionsModel> objects) { 
     super(context, resource, objects); 
     this.list = new ArrayList<SectionsModel>(); 
     this.list.addAll(objects); 
    } 

    ViewHolder v = new ViewHolder(); 
    public void setcheckbox() { 

     Log.d("viewholser" + v, "checkbox" + v.selected); 

     v.selected.setVisibility(View.VISIBLE); 

    } 

    public class ViewHolder { 
     public TextView setting; 
     public CheckBox selected; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 


     ViewHolder holder = null; 
     if (convertView == null) { 

      LayoutInflater vi = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      convertView = vi.inflate(R.layout.menu_frame_child, null); 
      holder = new ViewHolder(); 

      holder.setting = (TextView) convertView.findViewById(R.id.child_setting_header); 
      holder.selected = (CheckBox) convertView.findViewById(R.id.settings_check); 

     // holder.selected.setVisibility(View.INVISIBLE); 

      convertView.setTag(holder); 

      //holder.selected.setVisibility(View.INVISIBLE); 

      holder.selected.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        CheckBox cb = (CheckBox) v; 
        SectionsModel _state = (SectionsModel) cb.getTag(); 
        _state.setSelected(cb.isChecked()); 
       } 
      }); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     SectionsModel section = list.get(position); 

     holder.setting.setText(section.getSection()); 
     holder.selected.setChecked(section.isSelected()); 

     holder.selected.setTag(section); 

     return convertView; 
    } 

    @Override 
    public int getCount() 
    { 
     return super.getCount(); 
    } 

    @Override 
    public int getPosition(SectionsModel item) { 

     return super.getPosition(item); 
    } 


} 

UPDATE: 在getview我只是添加以下代碼 AppConstants.ischeckboxvisible是變量,其中Appconstants是類,並且ischeckboxvisible是該類上的公共靜態變量。最初這個變量是假

  if (!AppConstants.ischeckboxvisible) 
      { 
     holder.selected.setVisibility(View.INVISIBLE); 
    } 
     if (AppConstants.ischeckboxvisible) 
      { 
      holder.selected.setVisibility(View.VISIBLE); 
     } 
+0

您爲該功能做了什麼? –

+0

最初我設置複選框的可見性在適配器後,我在適配器中的方法可見該複選框。從按鈕單擊我在適配器中調用該方法,然後notifydataset更改但它不起作用。 –

+0

@MayurRaval如何讓每個不同的複選框可見?正如我所見,更新的代碼只能使一個複選框可見? – Stallman

回答

1

添加另一個屬性您SectionModel爲inEditMode,並在陣列中的所有項目,當用戶點擊編輯其設置爲true,並調用notifyDataSetChanged您的適配器上。

在適配器檢查每個項目上的標誌,並使其可見或不可見。

+0

謝謝最終我得到了..感謝給我idea.i沒有改變節模型..但我採取外部類靜態變量,我設置可變性真實和虛假的變量 –

+0

沒問題,很高興你解決了它:) – yahya

+0

@yahya如何讓每個不同的複選框可見?\ – Stallman

2

以防萬一某些人仍然需要它。

我解決了這個問題下一個方法:

在getView - 在ArrayAdapter方法我設置:

CheckBox checkBox = (CheckBox)listItem.findViewById(R.id.checkBox); 
    checkBox.setVisibility(View.GONE); 

內。然後setOnItemLongClickListener:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long l) { 

      for(int i = 0; i != arrayList.size(); i++) { 

     mCheckBox = (CheckBox) playlist.getChildAt(i).findViewById(R.id.checkBox); 
     mCheckBox.setVisibility(View.VISIBLE); 
    } 

      return true; 
     } 
    }); 

後,您在任何項目上執行長按所有的複選框都會出現。

相關問題