2011-09-09 4 views
1

je dois faire un ListView avec ces attributs spécifiques:Listview personnalisé avec case à cocher, seekbar et textview

1) Chaque ligne a une case à gauche, seekbar ci-dessous case à cocher et textview ci-dessous seekbar;

2) La barre de recherche est active et uniquement si CheckBox corrélé est coché.

3) textview affiche la progression de seekbar

S'il vous plaît aidez-moi

Répondre

0

Créer un ListView dans votre fichier de mise en page principale première

<ListView 
    android:id="@+id/colorStockList" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/vehicleOption" 
    android:divider="#b5b5b5" 
    android:dividerHeight="1dp" > 
</ListView> 

et un fichier de mise en page séparée qui contiendra votre case à cocher, seekbar et textview. Créez un autre fichier de présentation comme s'il s'agissait d'une vue en elle-même. Ex:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:padding="5dip" > 

<TextView 
    android:id="@+id/colorCode" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:gravity="start" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<SeekBar 
    android:id="@+id/countSeekBar" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp" 
    android:progress="20" 
    android:secondaryProgress="20" /> 

<EditText 
    android:id="@+id/countEditText" 
    android:layout_height="50dp" 
    android:layout_width="wrap_content" 
    android:gravity="end" 
    android:inputType="number" /> 

</RelativeLayout> 

Vous pouvez maintenant utiliser ViewHolder pour remplir cette liste. ViewHolder Exemple pour exemple ci-dessus

public class ColorStockListViewAdapter extends ArrayAdapter<Color> { 

Context context; 

public ColorStockListViewAdapter(Context context, int resourceId, 
     List<Color> items) { 
    super(context, resourceId, items); 
    this.context = context; 
} 

/* private view holder class */ 
private class ViewHolder { 
    // ImageView vehicleImageView; 
    TextView colorDesc; 
    SeekBar seekBar; 
    EditText countText; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 
    Color rowItem = getItem(position); 

    LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.color_stock_list, null); 
     holder = new ViewHolder(); 

     holder.colorDesc = (TextView) convertView 
       .findViewById(R.id.colorCode); 
     holder.seekBar = (SeekBar) convertView 
       .findViewById(R.id.countSeekBar); 
     holder.countText = (EditText) convertView 
       .findViewById(R.id.countEditText); 

     holder.seekBar.setTag(holder.countText); 
     holder.countText.setTag(holder.seekBar); 

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

    holder.colorDesc.setText(rowItem.getDescription()); 
    holder.seekBar.setMax(100); 
    holder.countText.setText("0"); 

    return convertView; 
} 
} 

Et voici comment vous allez appeler dans votre fichier d'activité

ColorStockListViewAdapteradapter = new ColorStockListViewAdapter(this, 
      R.layout.activity_sales_list, colors); 

où votre activity_sales_list est notre fichier de mise en page que vous avez créé pour remplir dans ListView. Aussi attacher case à cocher SeekBar et seekBar à case, utilisez setTag(), ex:

checkbox.setTag(seekbar); 

Maintenant, la barre de recherche pour une case à cocher peut être récupéré comme

SeekBar seekbar = checkbox.getTag(); 
Questions connexes