2012-04-24 14 views
6

मुझे एक सूची दृश्य मिला है और मैं इसके पृष्ठभूमि रंग को बदलना चाहता हूं। यह इस तरह जाना चाहिए। 1. इटिम = ग्रे; 2. आइटम; सफेद; 3. आइटम = ग्रे; 4. आइटम = सफेद आदि तो इसमें 2 पृष्ठभूमि रंग होना चाहिए। मैं लगभग 2 घंटे तक पहुंचने की कोशिश कर रहा हूं। मैं भ्रमित हो रहा हूँ। मैं एक समाधान के साथ उठ नहीं सकता। मुझे उम्मीद है कि आप में से कोई मेरी मदद कर सकता है।एंड्रॉइड - 2 अलग-अलग रंगों के साथ ListView

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

} 

एक्सएमएल लेआउट: * आइटम *

<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

मैं एक सप्ताह के लिए दूर था इसलिए मैं इसका परीक्षण नहीं कर सका। अब मैं उलझन में हूं कि इसे कैसे सेट अप करें। क्या आप मेरी मदद कर सकते हैं? क्या मुझे अपने विवेक में 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; 
} 
संबंधित मुद्दे