0

在我的应用程序中,我有一个列表视图。每个列表由一个图像、文本和三个按钮组成。我已将所有这些都放在 ListActivity 中。

当用户单击特定按钮时,我用来调用我的应用程序的下载功能。那时我希望那个按钮不可见。以下是我的代码的一部分

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;  
        }
    }
}    

单击位置时如何使特定按钮不可见

4

3 回答 3

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);

于 2011-10-12T09:27:18.357 回答
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;

然后在list view的show list data中如下

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);
                }
        }
于 2011-11-16T05:12:41.353 回答
0

@Kartik 这有效 ((ImageButton)v.findViewById(R.id.btn1)).setVisibility(View.INVISIBLE); 谢谢。

于 2012-07-06T10:09:08.417 回答