2012-09-04 3 views
2

Je veux définir 3 icônes à droite dans chaque ligne de la vue de liste. Je fais l'application de magasinage dans laquelle je veux quand en affichage de liste sélectionner un produit il/elle pourrait voir le produit de 3 manière comme si l'utilisateur choisira l'icône 1 afin que l'utilisateur puisse voir le produit dans la grille et si l'utilisateur choisissent l'icône 2 ainsi l'utilisateur peut voir le produit dans l'inverseur d'image en fait, je wana utilisateur colud voir les produits ouverts comme si l'utilisateur sélectionner l'icône de vue de la grille activité suivante afin d'ouvrir la grille view.this est mon codeComment 4 icônes dans le côté droit de chaque ligne dans la vue de liste

public class ListViewSupplementActivityActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
this.setContentView(R.layout.listlayout); 
ListView view = (ListView) findViewById(R.id.list); 
view.setAdapter(new CustomImageListAapter(this)); 

view.setOnItemClickListener(new OnItemClickListener() { 
public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
if(position ==0) 
{  
Intent ii = new Intent(ListViewSupplementActivityActivity.this,SingleListItem.class); 

ii.putExtra("operation", position); 
startActivity(ii);               
} 
if(position ==1){  
Intent in = new Intent(ListViewSupplementActivityActivity.this,Test.class); 

in.putExtra("operation", position); 
startActivity(in); 
} 
if(position == 5){ 
Intent in2= new    Intent(ListViewSupplementActivityActivity.this,FullImageActivity.class);  
Bundle bundle = new Bundle(); 
bundle.putInt("operation", position); 
in2.putExtras(bundle); 
startActivity(buse); } 

} 


}); 
} 
} 

en 3 view.when cliquez sur les icônes activité suivante C'est donc adaptateur personnalisé classe:

public class CustomImageListAapter extends BaseAdapter { 

private int[] images = {R.drawable.autumnwalk, R.drawable.bridge,R.drawable.butterfly,    
R.drawable.cheetah, R.drawable.cloud, R.drawable.su, R.drawable.wi, 
R.drawable.rocksculpture, R.drawable.skyatsunset, R.drawable.s, 
R.drawable.smoke, R.drawable.tulips}; 

private String[] imageDesc = { "Autumn Walk", "Bridge", 
"Butterfly", "Cheetah", "Cloud", "Highway", "Martini", 
"Rock Sculpture", "Sky at Sunset", "Sliced Orange", "Smoke", 
"Tulips"}; 

private Context ctx = null; 

public CustomImageListAapter(Context context) { 
this.ctx = context; 
} 

public int getCount() { 
return images.length; 
} 

public Object getItem(int arg0) { 
return null; 
} 

public long getItemId(int position) { 
return 0; 
} 
public View getView(int arg0, View arg1, ViewGroup arg2) { 

ImageView imgView = new ImageView(this.ctx); 
imgView.setScaleType(ScaleType.FIT_CENTER); 
imgView.setPadding(8, 8, 8, 8); 
imgView.setImageResource(images[arg0]); 
imgView.setAdjustViewBounds(Boolean.TRUE); 
imgView.setContentDescription(imageDesc[arg0]); 
imgView.setMaxHeight(200); 
imgView.setMaxWidth(200); 

TextView tv = new TextView(this.ctx); 
tv.setText(imageDesc[arg0]); 
tv.setMaxHeight(100); 
tv.setTypeface(Typeface.DEFAULT, Typeface.BOLD); 
tv.setGravity(Gravity.CENTER); 


LinearLayout layoutView = new LinearLayout(this.ctx); 
layoutView.setOrientation(LinearLayout.HORIZONTAL); 
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(150, 150); 
layoutView.addView(imgView, params1); 
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
layoutView.addView(tv, params2); 

return layoutView;} 

} 

Répondre

1

Définissez et utilisez un fichier de mise en page XML pour votre ligne d'élément de liste. La ligne contiendra 4 ImageViews sur le côté droit avec d'autres vues. Et utilisez ceci comme la disposition pour chaque rangée. Et en fonction de la position dans votre classe CustomAdapter, vous pouvez obtenir des références à chacune de vos lignes.

Maintenant, gonflez cette mise en page xml pour la ligne d'élément de liste dans getView() de CustomAdapter.

0

vous devez créer une vue custm pour votre liste d'affichage ou vous pouvez simplement créer un fichier xml pour cela et plus tard dans la classe Adapter gonfler.

comme ici j'ai créé un fichier xml avec deux TextViews.

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

      ViewHolder holder; 

      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.two_text, null); 

       holder = new ViewHolder(); 

       holder.text1 = (TextView) convertView 

       .findViewById(R.id.TextView01); 

       holder.text2 = (TextView) convertView 

       .findViewById(R.id.TextView02); 

       convertView.setTag(holder); 

      } else { 

       holder = (ViewHolder) convertView.getTag(); 

      } 

      holder.text1.setText(CountriesList.abbreviations[position]); 

      holder.text2.setText(CountriesList.countries[position]); 

      return convertView; 

     } 
0

Pour gagner du temps faire un programme, vous pouvez le faire comme suit:

  • Créer un fichier xml list_view_item (représenter chaque élément de vue). Pour faire un alignement flexible, vous devez utiliser RelativeLayout.
  • Gonfler la mise en page XML ci-dessus dans votre adaptateur réseau

(1) Créer list_view_item.xml pour la mise en page de l'article:

  • Le travail clé est le premier élément à parent voir à droite: android:layout_alignParentRight="true"

  • Puis les éléments suivants sont alignés par l'article précédent: android:layout_alignParentLeft="@+id/id_of_prev_item"

(EDITED 3 images :)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <ImageView 
     android:id="@+id/img1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" /> 

    <ImageView 
     android:id="@+id/img2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="@+id/img1" /> 

    <ImageView 
     android:id="@+id/img3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="@+id/img2" /> 

    <TextView 
     android:id="@+id/description" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="@+id/img3" 
     android:fadingEdge="vertical" /> 

</RelativeLayout> 

(2) gonfler le plan de la pièce en CustomImageListAapter:

suggérée: prolonger CustomImageListAapter classe de ArrayAdapter<T> pour une utilisation plus spécifique de données et rendre votre code plus complet.

public class CustomImageListAapter extend ArrayAdapter<YourDataItem> 
{ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     int item_view_id = R.layout.list_view_item; 

     LinearLayout holderView = new LinearLayout(getContext()); 
     String inflaterName = Context.LAYOUT_INFLATER_SERVICE; 
     LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(inflaterName); 
     inflater.inflate(item_view_id, holderView, true); 

     //YourDataItem: is your class represent each row on your database 
     YourDataItem item = getItem(position); 

     //TODO: do your stuff of works with your view item and data here 

     return holderView; 
    } 
} 
+0

Est-il nécessaire de prolonger CustomImageListAapter avec ArrayAdapter? Parce que je ne suis pas avec la base de données de le connecter .i fera lettre de base de données maintenant je veux simplement cette tâche .i je reçois l'erreur de l'étendre avec ArrayAdapter –

+0

je l'ai fait ceci dans la classe customImageListAdapter –

+0

public View getView1 (position int, vue convertView, parent ViewGroup) { int item_view_id = R.layout.listlayout; LinearLayout holderView = new LinearLayout (getContext()); String inflaterName = Contexte.LAYOUT_INFLATER_SERVICE; LayoutInflater inflater = (LayoutInflater) getContext(). GetSystemService (inflaterName); inflater.inflate (item_view_id, holderView, true); return holderView; } Contexte privé getContext() {// TODO méthode généré automatiquement stub return null;} –

Questions connexes