2011-10-12 3 views
0

в моем приложении У меня есть список. Каждый список состоит из изображения, текста и трех кнопок. Я разместил все это в ListActivity.Как сделать кнопку получить невидимым в списке приложений android

Когда пользователь нажимает на определенную кнопку, я использую функцию загрузки моего приложения. В то время я хочу, чтобы эта кнопка была невидимой. Ниже приводится часть моего кода

public class Content extends ListActivity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     adapter = new EventAdapter(this); 
     setListAdapter(adapter); 
    } 

    public class InventoryAdapter extends BaseAdapter implements OnClickListener 
{   
    private Context context; 
    ImageButton b1; 
    public InventoryAdapter(Context ctx) 
    {  
     context = ctx; 
    } 
    public long getItemId(int position) 
    { 
     return position; 
    } 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     View view; 
     if(convertView == null) 
     { 
      LayoutInflater inflater = (LayoutInflater) 
      context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.list, null); 
      b1 = (ImageButton)view.findViewById(R.id.Btn1); 
      b1.setOnClickListener(this); 
     } 
     else 
     { 
      view = convertView; 
     } 
     b1.setTag(position);    
     return view; 
    } 

    @Override 
    public void onClick(View v) 
    { 
     Log.e("onclick","onclick"); 
     Integer position = (Integer) v.getTag(); 
     switch(v.getId()) 
     { 
      case R.id.Btn1: 
       selected_url=url[position]; 
       new DownloadTask1().execute(); 
      break; 
     } 
    } 
}  

Как сделать конкретную кнопку, чтобы получить invisibled, когда позиция нажата

ответ

1

создать массив, хранящий список кликов по кнопке в соответствии с их положением.

public static ArrayList<Integer> list_Btn = new ArrayList<Integer>(); //to make the buy button either visible or invisible 

В OnClick кнопки в списке, чтобы быть следующим

request_holder.button.setOnClickListener(new OnClickListener() 
      { 
       @Override 
       public void onClick(View v) 
       { 
            Appconstant.list_Btn.add(position,View.INVISIBLE);  
       } 
      }); 
      return convertView; 

Затем в списке Показать данные в виде списка, чтобы быть следующим

public void ListData(listViewHolder viewHolder, int position) 
     { 
       if(Appconstant.list_Btn.get(position) == View.VISIBLE) 
       { 
        request_holder.buy.setVisibility(View.VISIBLE); 
       } 
       else if(Appconstant.list_Btn.get(position)== View.INVISIBLE) 
       { 
        request_holder.buy.setVisibility(View.INVISIBLE); 
       } 
     } 
3

Использования button.setVisibility(View.Invisible); для создания вашей кнопки невидимой (пространство, занимаемое кнопкой остается это).

ИЛИ использовать button.setVisibility(View.GONE); (Это удаляет кнопку из макета и другие виды занимает место)

Таким образом, ваш метод onClick будет выглядеть:

@Override 
    public void onClick(View v) 
    { 
     Log.e("onclick","onclick"); 
     Integer position = (Integer) v.getTag(); 
     switch(v.getId()) 
     { 
      case R.id.Btn1: 
       selected_url=url[position]; 
       btn1.setVisibility(View.INVISIBLE); 
       new DownloadTask1().execute(); 
      break; 
     } 
    } 

Если вы хотите, чтобы сделать их видимыми вы необходимо использовать View.VISIBLE.

Так что вы должны сделать, как: button.setVisibility(View.VISIBLE);

+0

то, что вы сказали, это обряд, но как незримую кнопку в определенном положении в списке ... –

+0

Я хочу, чтобы btn1 стал невидимым, в соответствии с положением, которое он нажал –

+0

Я использовал оба view.GONE и view.INVISIBLE, у меня есть список из 21 кнопки. Когда я нажимаю кнопку в позиции 0, кнопки в позициях 5, 12, 20 становятся невидимыми или исчезают. Я хочу знать, «как упомянуть эту кнопку в позиции 0, чтобы получить невидимость?» –

0

@Kartik это работал ((ImageButton) v.findViewById (R.id.btn1)). setVisibility (View.INVISIBLE); Благодарю.

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

  • Нет связанных вопросов^_^