2012-04-24 10 views
6

私はListViewを持っており、その背景色を変更したいと思います。それはこのようになるはずです。 1.Item =グレー。 2.アイテム;白; 3.アイテム=グレー; 4. Item = whiteなど.2つの背景色が必要です。私はほぼ2時間それを達成しようとしています。私は混乱しています。私は解決策を思いつきません。あなたの誰かが私を助けてくれることを願っていますAndroid - 2色のリストビュー

私はそれを試してみました:だからここ

for(int counter = 0; counter < itemList.size(); counter++){ 
      if(adapter.getItem(position) %2 == 1){ 
       Layout.setBackgroundColor(Color.GREY) 
        }; 
      else{ 
      Layout.setBackgroundColor(Color.WHITE); 
       } 

私の穴コードです。私はあなたの誰かが私に言うことを願って:

MainActivity

public class MainActivity extends Activity implements OnItemClickListener { 

    ListView lview3; 
    ListViewCustomAdapter adapter; 
    private ArrayList<Object> itemList; 
    private ItemBean bean; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     prepareArrayLits(); 
     lview3 = (ListView) findViewById(R.id.listView1); 
     adapter = new ListViewCustomAdapter(this, itemList); 
     lview3.setAdapter(adapter); 




     lview3.setOnItemClickListener(this); 
    } 

    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) { 
     // TODO Auto-generated method stub 
     RelativeLayout Layout = (RelativeLayout) findViewById(R.id.relativeLayout1); 
     ItemBean bean = (ItemBean) adapter.getItem(position); 
     for(int counter = 0; counter < itemList.size(); counter++){ 
      adapter.getItem(position); 
      Layout.setBackgroundColor(Color.CYAN);} 

     Toast.makeText(this, "Title => "+bean.getTitle()+" \n Description => "+bean.getDescription(), Toast.LENGTH_SHORT).show(); 
    } 

    /* Method used to prepare the ArrayList, 
    * Same way, you can also do looping and adding object into the ArrayList. 
    */ 
    public void prepareArrayLits() 
    { 
     itemList = new ArrayList<Object>(); 

     AddObjectToList(R.drawable.ic_add, "add", "Add desc", "2"); 
     AddObjectToList(R.drawable.ic_delete, "Delete", "Delete desc", "2"); 
     AddObjectToList(R.drawable.ic_down, "Down", "Down desc", "2"); 
     AddObjectToList(R.drawable.ic_info, "Information", "Information desc", "2"); 
     AddObjectToList(R.drawable.ic_help, "Help", "Help desc", "2"); 
     AddObjectToList(R.drawable.ic_download, "Download", "Download desc", "2"); 
     AddObjectToList(R.drawable.ic_mail, "Mail", "Mail desc", "2"); 
     AddObjectToList(R.drawable.ic_search, "Search", "Search desc", "2"); 
     AddObjectToList(R.drawable.ic_settings, "Settings", "Settings desc", "2"); 

    } 

    // Add one item into the Array List 
    public void AddObjectToList(int image, String title, String desc, String duration) 
    { 

     bean = new ItemBean(); 
     bean.setduration(duration); 
     bean.setDescription(desc); 
     bean.setImage(image); 
     bean.setTitle(title); 
     itemList.add(bean); 
    } 



} 

ItemBean

public class ItemBean 
{ 
    String title; 
    String description; 
    int image; 
    String duration; 

    public String getTitle() { 
     return title; 
    } 
    public String getDuration() { 
     return duration; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public int getImage() { 
     return image; 
    } 

    public void setImage(int image) { 
     this.image = image; 
    } 

    public void setduration(String duration) { 
     this.duration = duration; 
    } 
} 

をListViewCustomAdapter

public class ListViewCustomAdapter extends BaseAdapter{ 

    ArrayList<Object> itemList; 

    public Activity context; 
    public LayoutInflater inflater; 

    public ListViewCustomAdapter(Activity context,ArrayList<Object> itemList) { 
     super(); 

     this.context = context; 
     this.itemList = itemList; 

     this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public int getCount() { 
     // TODO Auto-generated method stub 
     return itemList.size(); 
    } 

    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return itemList.get(position); 
    } 

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

    public static class ViewHolder 
    { 
     ImageView imgViewLogo; 
     TextView txtViewTitle; 
     TextView txtViewDescription; 
     TextView duration; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     ViewHolder holder; 
     if(convertView==null) 
     { 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.items, null); 

      holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo); 
      holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle); 
      holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription); 
      holder.duration = (TextView) convertView.findViewById(R.id.duration); 

      convertView.setTag(holder); 
     } 
     else 
      holder=(ViewHolder)convertView.getTag(); 

     ItemBean bean = (ItemBean) itemList.get(position); 

     holder.imgViewLogo.setImageResource(bean.getImage()); 
     holder.txtViewTitle.setText(bean.getTitle()); 
     holder.txtViewDescription.setText(bean.getDescription()); 
     holder.duration.setText(bean.getDuration()); 



     return convertView; 
    } 

} 

XMLレイアウト: * 項目 *

<RelativeLayout  android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/list_selector" xmlns:android="http://schemas.android.com/apk/res/android" android:padding="5dip"> 

    <ImageView 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:padding="3dip" 
     android:id="@+id/imgViewLogo" 
     android:src="@drawable/icon" 
     android:layout_alignParentLeft="true" 
     android:layout_centerInParent="true" 
     android:background="@drawable/image_bg" 
     android:layout_marginRight="5dip" 
     android:scaleType="center" 
     > 
    </ImageView> 

    <TextView 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imgViewLogo" 
     android:text="TextView" 
     android:layout_width="wrap_content" 
     android:id="@+id/txtViewTitle" 
     android:layout_toRightOf="@+id/imgViewLogo" 
     android:textColor="#040404" 
     android:typeface="sans" 
     android:textSize="20dip" 
     android:textStyle="bold" 
     android:layout_marginRight="15dp" 
     > 
    </TextView> 

    <TextView 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:layout_width="wrap_content" 
     android:id="@+id/txtViewDescription" 

     android:textColor="#343434" 
     android:textSize="15dip" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@+id/imgViewLogo" 
     android:layout_below="@+id/txtViewTitle" 
     android:layout_marginLeft="2dip" 
     android:layout_marginRight="15dp" 
     > 
    </TextView> 
    <TextView 
     android:id="@+id/duration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/txtViewTitle" 
     android:gravity="right" 
     android:layout_marginRight="5dip" 
     android:textSize="15dip" 
     android:textColor="#10bcc9" 
     android:textStyle="bold"/> 

    <ImageView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/arrow" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 

     /> 

</RelativeLayout> 

レイアウト:*

* メイン
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 


    > 


    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:divider="#b5b5b5" 
     android:dividerHeight="1dp" 
     android:listSelector="@drawable/list_selector" 
     /> 



</LinearLayout> 

すべてのヒントは、 おかげで参考になります。

答えて

10

事実の後に背景色を設定するためにそのループforを使用しないでください。アダプタのgetViewメソッドで行います。これを試してください:

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

    /* remainder is unchanged */ 

    convertView.setBackgroundColor(position % 2 == 0 ? Color.WHITE : Color.GREY); 
    return convertView; 
} 
+0

私は1週間離れていたので、テストできませんでした。今私はそれを設定する方法を混乱させる。手伝って頂けますか? oncreateでgetView()を呼び出す必要がありますか?パラメータはどのように挿入すればよいですか? ありがとう – Ahmad

0

これは、カスタムアダプターのgetView関数内にバックグラウンドを設定することで簡単に行うことができます。

は、このコードを試してみてください。

if(position % 2 == 0) 
      convertView.setBackgroundColor(Color.GREY); 
    else 
      convertView.setBackgroundColor(Color.WHITE); 
0

は商品の位置で渡さに基づいてgetViewメソッドは異なるビューを返すことができます。

-1

は、私はあなたが位置

 if (position == 0) 
     { 
      view.SetBackgroundColor(Android.Graphics.Color.gray); 
     } 
     else if (position == 1) 
     { 
      view.SetBackgroundColor(Android.Graphics.Color.white); 
     } 

ので、あなたが持っているどのように多くの位置に応じて上に基づいてこれを行うことができると信じて。

3

セレクタスイッチャーを使用して背景を変更する別の方法です。 このメソッドを使用すると、セレクタのホバーとフォーカスの色が保持されます。

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

    /* remainder is unchanged */ 

    convertView.setBackgroundResource(position % 2 == 0 ? R.drawable.list_selector_first : R.drawable.list_selector_second); 
    return convertView; 
} 
関連する問題