2013-02-22 34 views
1

在我的listadapter的getView方法中,當我在列表中選擇一個項目時,我希望這個選定的項目背景圖像將特定圖像和列表中的其他項目採取默認的背景圖像。我實現了一個for循環來做到這一點,但是當我從行中選擇一個項目,背景圖像不會改變..我們可以更改背景圖像從按鈕單擊?我在哪裏錯了,因爲我相信我的代碼是好的。以下是選中項目的部分。改變從適配器中選擇的項目上的listview的背景圖像

pos = position;

size = main.items.size()-1; 

    holder.row.setOnClickListener(new OnClickListener() { 

     @Override 

     public void onClick(View v) { 

      int x = position + 1; 

       for (int i=0;i<size;i++){ 

        holder.row.setBackgroundResource(R.drawable.layer_unselected); 

        holder.text.setTextColor(Color.WHITE); 

        if (x==main.items.size()-1){ 

         holder.row.setBackgroundResource(R.drawable.layer_selected); 

         holder.text.setTextColor(Color.BLACK); 

        }  

       } 

       System.out.println("selected layer: "+ x); 

       System.out.println("selected layer pos: "+pos); 

       System.out.println("selected layer size: "+size); 


       main.selectItem(position+1); 

     } 
    }); 

回答

1

更換

holder.row.setBackgroundResource(R.drawable.layer_unselected); 
holder.row.setBackgroundResource(R.drawable.layer_selected); 

隨着

  1. 對於按鈕背景

    holder.row.setBackgroundDrawable(getResources().getDrawable(R.drawable.layer_unselected)); 
    holder.row.setBackgroundDrawable(getResources().getDrawable(R.drawable.layer_selected)); 
    
  2. 對於ImageView的背景

  3. holder.row.setImageDrawable(getResources().getDrawable(R.drawable.layer_unselected)); 
    holder.row.setImageDrawable(getResources().getDrawable(R.drawable.layer_selected)); 
    
+0

我使用\t \t holder.row.setBackgroundDrawable(v.getResou 。RCE中()getDrawable(R.drawable.layer_unselected)); 親愛的 – Dimitri 2013-02-22 05:44:10

+0

沒有效果請不要使用v.getResources()。只使用getResources() – 2013-02-22 05:45:35

+0

當我使用getResources()它說「方法getResources()是未定義的類型新View.OnClickListener(){}」 – Dimitri 2013-02-22 05:47:41

0

MyListAdapter

private class MyListAdapter extends BaseAdapter 
{ 

    private List<HashMap<String,String>> List; 
    private LayoutInflater mInflater; 
    private int layoutresource; 

    public MyListAdapter(Context context,int resource,List<HashMap<String, String>> myList) { 
     List = myList; 
     mInflater = LayoutInflater.from(context); 
     layoutresource = resource; 
    } 

    @Override 
    public int getCount() { 
     return List.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return List.get(position); 
    } 

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

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      convertView = mInflater.inflate(layoutresource,null); 
     }  

     final View rootView = convertView.findViewById(R.id.root); 

     Button btnFav = (Button) convertView.findViewById(R.id.btnFav); 
     MyTextView name = (MyTextView) convertView.findViewById(R.id.textName); 
     MyTextView variety = (MyTextView) convertView.findViewById(R.id.textVariety); 
     MyTextView price = (MyTextView) convertView.findViewById(R.id.textPrice); 

     btnFav.setBackgroundDrawable(getResources().getDrawable(R.drawable.remove_fav_button_selector)); 
     name.setText(List.get(position).get(TAG_NAME)); 
     variety.setText(List.get(position).get(TAG_VARIETY)); 
     price.setText(List.get(position).get(TAG_PRICE)); 

     rootView.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       finish(); 
       Intent in = new Intent(MainActivity.this, DetailsActivity.class); 
       in.putExtra("ID", List.get(position).get(TAG_ID)); 
       startActivity(in); 
      } 
     }); 

     return convertView; 
    } 
} 
0

text_color_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true" android:color="#ff8800"/> 
<!-- pressed --> 
<item android:state_focused="true" android:color="#ff8800"/> 
<!-- focused --> 
<item android:color="@color/textColor"/> 
<!-- default --> 

</selector> 

main.xml中

<Button 
     android:id="@+id/button1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:text="Button" 
     android:textColor="@drawable/text_color_selector" /> 
相關問題