2015-08-31 76 views
-1

我有一個包含8個項目的listView。每個項目都包含一個單一按鈕。我希望當每個列表項目點擊該項目的背景變化。我使用baseAdapter,除了當第一個項目(零位置)被點擊時,所有的東西都是正確的,然後背景沒有改變。這是我的適配器:BaseAdapter與OnClickListener無法正常工作

class MainListAdapter extends BaseAdapter implements View.OnClickListener { 
    ViewHolder viewHolder ; 
    int SelectedItem = 55 ;// dummy integer 
    Button[] buttons = new Button[8]; 

    @Override 
    public int getCount() { 
     return MainListTitle.size();// array of string 
    } 

    @Override 
    public Object getItem(int i) { 
     return i; 
    } 

    @Override 
    public long getItemId(int i) { 
     return i; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     if(view==null){ 
      // inflate the layout 
      view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.main_list_item, viewGroup ,false); 
      // well set up the ViewHolde 
      viewHolder = new ViewHolder(); 
      viewHolder.Title = (Button) view.findViewById(R.id.mainListButton); 
      viewHolder.Title.setText(MainListTitle.get(i)); 
      viewHolder.Title.setId(i); 
      buttons[i]=viewHolder.Title ; 
      viewHolder.Title.setOnClickListener(this); 

      //store the holder with the view. 
      view.setTag(viewHolder); 
     }else{ 
      // we've just avoided calling findViewById() on resource everytime 
      // just use the viewHolder 
      viewHolder = (ViewHolder) view.getTag(); 
     } 


     return view; 
    } 


    @Override 
    public void onClick(View view) { 
     // Toast.makeText(getApplicationContext(),view.getId()+"",Toast.LENGTH_SHORT).show(); 
      switch (view.getId()){ 

       case 0: 
        onButtonSelcted(0); 
        break; 
       case 1: 
        onButtonSelcted(1); 
        break; 
       case 2: 
        onButtonSelcted(2); 
        break; 
       case 3: 
        onButtonSelcted(3); 
        break; 
       case 4: 
        onButtonSelcted(4); 
        break; 
       case 5: 
        onButtonSelcted(5); 
        break; 
       case 6: 
        onButtonSelcted(6); 
        break; 
       case 7: 
        onButtonSelcted(7); 
        break; 
      } 
    } 


    class ViewHolder{ 
     Button Title ; 
     } 

    private void onButtonSelcted(int position){ 
     if (SelectedItem == position){} 
     else { 
      buttons[position].setBackgroundColor(getResources().getColor(R.color.white)); 
      if (SelectedItem != 55){ 
       buttons[SelectedItem].setBackgroundColor(getResources().getColor(R.color.material_blue_grey_900)); 
      } 
      SelectedItem = position ; 
     } 
    } 
+0

是否要更改ListView中的按鈕?你爲什麼創建 - 按鈕[]按鈕=新按鈕[8];? 將R.layout.main_list_item添加到問題中。 –

回答

相關問題