2015-04-22 73 views
1

我在每個項目中都設置了兩個不可見的按鈕。我想,當用戶點擊一個項目時,只有該項目中的按鈕纔會變爲可見。使用想在點擊列表視圖的項目中查看某些東西

我是個自定義適配器爲我的列表視圖...

public class LocationAdapter extends BaseAdapter{ 
    String [] n; 
    Context context; 
    String[] a; 
    int bint = View.INVISIBLE; 

    private static LayoutInflater inflater=null; 
    public LocationAdapter(MainActivity mainActivity, String[] names, String[] addresses, int bint) { 
     // TODO Auto-generated constructor stub 
     this.bint = bint; 
     n=names; 
     context=mainActivity; 
     a=addresses; 
     inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return n.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    public class Holder 
    { 
     TextView name; 
     TextView address; 
     Button b1; 
     Button b2; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     Holder holder=new Holder(); 
     View rowView; 
     rowView = inflater.inflate(R.layout.rowlayout2, null); 
     holder.name =(TextView) rowView.findViewById(R.id.EditTextName); 
     holder.address =(TextView) rowView.findViewById(R.id.EditTextAddress); 
     holder.b1 = (Button) rowView.findViewById(R.id.Edit); 
     holder.b2 = (Button) rowView.findViewById(R.id.Delete); 
     holder.b1.setVisibility(bint); 
     holder.b2.setVisibility(bint); 
     holder.name.setText(n[position]); 
     holder.address.setText(a[position]); 
     rowView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Toast.makeText(context, "You Clicked "+n[position], Toast.LENGTH_LONG).show(); 
      } 

     }); 
     return rowView; 
    } 
} 

誰能請給我我需要怎麼做到這一點的想法?

回答

0

您需要在您的ListView上設置OnItemClickListener並更改onItemClick()Buttons的可見性。

另外請注意,您目前執行的LocationAdapter不檢查if(convertView == null),它不設置ViewHoler作爲行View的標籤。

+0

但如何獲得一個項目中的按鈕的引用,此外,ig如何等被點擊的項目?請詳細說明。 – Isaac

+0

獲得對'Button'的引用的一種方法是使用'findViewById()'。 'onItemClick()'爲你提供被點擊的行的'View'。如果該項目是不可見的,並且您想要響應其單擊事件,則需要在其上設置一個「OnClickListener()」(我不認爲這是很棒的用戶體驗,因爲用戶無法看到「Button」在那裏) – Emmanuel

+0

不,我認爲你有什麼我說錯了 - 我有一個不可見的編輯和刪除按鈕,當用戶單擊列表項時,它們出現供用戶與之交互 – Isaac

0

你只能設置onclicklistener查看對象及其childs ....所以要麼你實現你自己的API,你有一個方法,就像標準的onclicklistener一樣,但你可以將它設置在你想要的每個對象上... ...將是非常有趣的恕我直言...

或您使用像textviews等意見,然後設置一個onclicklistener對他們!

0

這裏是你可以嘗試的 添加onclicklsitener到buttom而不是整個視圖。裏面的按鈕XML來要申請點擊監聽器添加以下兩行

android:focusable="false" 
android:focusableInTouchMode="false" 

現在申請監聽器按鈕,如下

holder.button.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       //set visibility of items here 
       holder.buttonedit.setVisibility(View.GONE); 
       holder.buttonedit.setVisibility(View.VISIBLE); 

      } 
     }); 

內getview方法申報持有人最終

final Holder holder=new Holder(); 

和你完成