PDA

View Full Version : تغیر رنگ آیتم های لیست ویو به صورت یکی در میان



aminbir
سه شنبه 14 مرداد 1393, 18:33 عصر
چطور میتوان رنگ پس زمینه آیتم ها درلیست ویو رو به صورت یکی در میان سیاه و سفید کرد که جدا شدنشون مشخص بشه

akbar8298
سه شنبه 14 مرداد 1393, 18:50 عصر
شما باید از یه آداپتور کاستوم استفاده کنید. اگه بلد نیستید توی سایت زیاد توضیح داده شده. می تونید گوگل کنید listview with custom adapter

توی آداپتورتون هم میتونید از position استفاده کنید و نسبت به زوج یا فرد بودن اون تغییر رنگ بدین.

یه سرچ بزنید اگه نتونستید بگید تا کدش رو بزارم.

aminbir
سه شنبه 14 مرداد 1393, 21:51 عصر
تشکر ازپاسختون دوست عزیز
ممنون میشم اگر زحمتی نیست کد کاملشو بزارید وهمچنین طریقه استفاده

akbar8298
سه شنبه 14 مرداد 1393, 22:26 عصر
من کلیات رو میگم اینجا
یک فایل لی اوت برای نمایش هر سطر

row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Lin1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="70dp"
android:orientation="horizontal" >


<TextView
android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical"
android:background="@drawable/ballonleft"
android:padding="9dp"
android:text="TextView"
android:textColor="#d4e3bf"
android:textSize="18sp" />

</LinearLayout>

لی اوت اصلی برنامه

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bgconv" >

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:cacheColorHint="#00000000"
android:choiceMode="none"
android:divider="@null" >

</ListView>

</RelativeLayout>



کد اصلی برنامه


ListView listView=null;
myAdapter adapter = null;
ArrayList<String> text = null;

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

listView=(ListView) findViewById(R.id.listView1);

text= getArrayList();// من در اینجا یک تابع دارم که مقادیری که می خواهم در لیست نشان دهم را به صورت
//arraylist می دهد


adapter=new myAdapter(this,R.layout.row, text);
listView.setAdapter(adapter);
}
}



و در آخر هم کلاس آداپتر یعنی myAdapter.java


public class myAdapter extends ArrayAdapter<String> {
private ArrayList<String> text = new ArrayList<String>();
private Context context=null;
int layoutcode;
public myAdapter(Context _context,int lrid,ArrayList<String> _text )
{
super(_context, lrid,_text);
this.text=_text;
this.context=_context;

this.layoutcode=lrid;
}

public int getCount() {

return text.size();
}

public String getItem(int position) {

return text.get(position);

}

public long getItemId(int position) {
return position;

}

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

final String String = text.get(position);

final ViewHolder holder;
View view = convertView;

if (view == null) {
int layoutCode=this.layoutcode;

view = ((Activity) context).getLayoutInflater().inflate(layoutCode, parent, false);

LinearLayout lin1 =(LinearLayout) view.findViewById(R.id.Lin1);
if(position%2==0)
lin.setBackgroundColor(Color.GREEN);
else
lin.setBackgroundColor(Color.RED);

holder = new ViewHolder();
assert view != null;


holder.txtName=(TextView) view.findViewById(R.id.txtText);

view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.txtName.setText(text.get(position));
return view;
}

class ViewHolder {
TextView txtName;
}
}