2013-08-07 2 views
0

У меня есть listview с пользовательским адаптером, который расширяет Baseadapter. В каждой строке списка есть текстовое представление и кнопка, по умолчанию кнопка находится в состоянии Invisible. Я вызываю view.OntouchListener в методе getView адаптера, когда строка получает swiped, я делаю кнопку Visible в этой позиции. когда другая строка пробита, все кнопки в других строках должны быть невидимыми, кроме текущей позиции.Android Listview сделать кнопку невидимой в getview

Любая помощь приветствуется.

Thanks, Prashanth.

+0

Вы должны предоставить код. –

ответ

0

Думаю, вам нужно сохранить видимость кнопки в адаптере. Ниже вы добавили пример (еще не проверенный) о том, как показывать кнопку при нажатии на текст (любые другие кнопки будут скрыты).

импорт com.test.data.ExportOption;

общественного класса ExportOptionsAdapter расширяет BaseAdapter {

// Constants 
private final static String TAG = "ExportOptionsAdapter"; 

// Data 
private ArrayList<ExportOption> mItems; 
private Context mContext; 
private LayoutInflater mLf; 
private ListView mParent; 

public ExportOptionsAdapter(Context pContext) { 
    mItems = new ArrayList<ExportOption>(); 
    mContext = pContext; 
    mLf = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

public ExportOptionsAdapter add(ExportOption pOption){ 
    mItems.add(pOption); 
    return this; 
} 

public ExportOptionsAdapter add(ArrayList<ExportOption> exportOptions) { 
    mItems.addAll(exportOptions); 
    return this; 
} 

public int getCount() { 
    return mItems.size(); 
} 

public ExportOption getItem(int position) { 
    return mItems.get(position); 
} 

public long getItemId(int position) { 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder vh; 

    if(null == mParent){ 
     mParent = (ListView) parent; 
    } 

    if(null == convertView){ 
     convertView = (View)mLf.inflate(R.layout.export_option, parent, false); 
     vh = new ViewHolder(); 
     vh.option = (TextView)convertView.findViewById(R.id.option_name); 
     vh.btn = (Button)convertView.findViewById(R.id.btn); 


     convertView.setTag(vh); 
    } else { 
     vh = (ViewHolder)convertView.getTag(); 
    } 

    vh.option.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      int position = mParent.getPositionForView(v); 
      if(AdapterView.INVALID_POSITION != position){     
       for(int i = 0; i < mItems.size(); i++){ 
        if(i == position){ 
         // mark the selected one as visible 
         mItems.get(position).markButtonAsVisible(true); 
        } else { 
         // hide the other items 
         mItems.get(position).markButtonAsVisible(false); 
        } 
       } 
      } 
     } 
    }); 

    vh.option.setText(mItems.get(position).getType()); 

    if(mItems.get(position).buttonMarkedAsVisible()){ 
     vh.btn.setVisibility(View.VISIBLE); 
    } else { 
     vh.btn.setVisibility(View.GONE); 
    } 
    return convertView; 
} 

private class ViewHolder{ 
    public TextView option; 
    public Button btn; 
} 

}

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