2016-11-08 105 views
0

我有一個相對佈局,我想隱藏和顯示按鈕單擊(爲每個列表視圖項目)。我如何隱藏視圖在列表視圖根據位置

Adapter.java

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

    inflate list_items.xml 

    set data 


on button click 
      if view is hidden 
       view.setVisibility(View.VISIBLE); 
      } else { 
       view.setVisibility(View.GONE); 
      } 
     } 
    }); 
    return cView; 
} 

回答

0

我已經修改了你的一些代碼。試試這個,可能對你有用。

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

inflate list_items.xml 

set data 

//Layout which i want to hide and show 
     barRL = (RelativeLayout) convertView.findViewById(R.id.layout20); 
     button= (Button) convertView.findViewById(R.id.button); // to click button 

     if (button is not visible) { 
       barRL.setVisibility(View.VISIBLE); 
     } else { 
       barRL.setVisibility(View.GONE); 
     } 

     //Button to hide and show layout 
     ImageView arrowUpDown =   (ImageView)convertView.findViewById(R.id.arrowupdown); 

     arrowUpDown.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       if (arrowUpDownis not visible) { 
        arrowUpDownis.setVisibility(View.VISIBLE); 
       } else { 
        arrowUpDownis.setVisibility(View.GONE); 
       } 
    notifyDataSetChanged(); 

       } 
      }); 
      return convertView; 
     } 

並沒有在xml中設置按鈕的可見性。

0

只需將notifydatasetchanged()添加到您的代碼。

ArrayList <Boolean> statusList;//initialise it in array as true for all the elements 

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

inflate list_items.xml 

set data 

//Layout which i want to hide and show 
barRL = (RelativeLayout) convertView.findViewById(R.id.layout20); 

if (statusList.get(position)) { 
      barRL.setVisibility(View.VISIBLE); 
     } else { 
      barRL.setVisibility(View.GONE); 
     } 
//Button to hide and show layout 
ImageView arrowUpDown = (ImageView) convertView.findViewById(R.id.arrowupdown); 

arrowUpDown.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
if (view is not visible) { 
      statusList.set(position,true); 
     } else { 
      statusList.set(position,false); 
     } 
     notifyDataSetChanged(); 
    } 
}); 
return convertView; 
} 
+0

因爲您需要創建一個布爾列表,其中包含所有可見和隱藏酒吧的狀態。然後在getView()上,您需要根據該布爾列表使其可見或隱藏。 –

+0

我已經更新了相同的代碼 –

相關問題