Horizontal ScrollView dans la Vue Liste, Élément Android
J'ai une vue de liste avec 20 lignes et je veux installation horizontale scrollview
pour chaque ligne de l'élément dans la vue liste, chaque ligne contient plus d'un élément.
Voici mon code :
<?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" >
<HorizontalScrollView
android:id="@+id/hor_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none" >
<LinearLayout
android:id="@+id/mainLinear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
Rangée interne Mise en page qui est à être reproduite dans une ligne de n'importe quel nombre de fois
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6.0dip"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="Example Value"
android:textAppearance="?android:textAppearanceMedium" />
BaseAdapter
public class HorizontalListViewAdapter extends BaseAdapter {
private Context context;
private ArrayList<ArrayList<DwivediJi>> dataSet;
public HorizontalListViewAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return 20;
}
@Override
public Object getItem(int arg0) {
//TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
//TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.horizontal_list_item, null,false);
LinearLayout mainLinnerLayout=(LinearLayout)convertView.findViewById(R.id.mainLinear);
for (int i = 0; i <5; i++) {
View additionView = inflater.inflate(R.layout.inner_layout_file, null,false);
LinearLayout innerLinnerLayout=(LinearLayout)additionView.findViewById(R.id.inner_layout);
mainLinnerLayout.addView(innerLinnerLayout);
}
return convertView;
}
class ViewHolder {
TextView tv_titleExample;
HorizontalScrollView hzView;
LinearLayout linear_layout,main_linear_layout;
}
}
Mon Problème
Regardez la capture d'écran ci-joint. Mon problème est que plus d'un point de vue est en montrant à la fois dans chaque ligne.
Je veux que la seule vue doit montrer à l'utilisateur à un moment et pour le reste, tout ce que l'utilisateur a à faire est de glisser de gauche à droite ou de droite à gauche.
OriginalL'auteur Gaurav Arora | 2013-11-14
Vous devez vous connecter pour publier un commentaire.
Remarque: n'est Pas une solution idéale, mais il devrait fournir ce que vous voulez..
Une autre Remarque: Cela peut rendre votre listview légèrement janky, selon le schéma de la complexité
OriginalL'auteur Kiran Parmar
Le problème est avec votre carte:
getCount()
à partir de votre carte doit retourner le nombre total de liste. De retour20
n'est pas valide dans votre contexte, et vous semblez avoir 20 articles dans votre liste. Vous devez retournerdataSet.size();
getItem()
doit retourner le produit à partir du modèle de structure de données, dans ce cas:Ci-dessous
Aussi, votre
getView
méthode doit retourner la vue qui affiche les données du modèle à donné àposition
paramètre. Retour d'unViewGroup
avec les non-significatif des données factices est ce que vous avez actuellement. Vous devriez obtenir leArrayList<DwivediJi>
de paramètre de position (pardataSet.get(position)
) et la construction/gonfler une Vue qui affiche correctement cette structure de données de l'élément.OriginalL'auteur gunar
Changement de maquette intérieure largeur de match_parent. Cela devrait vous aider à
Semble que vous ajoutez à votre maquette intérieure dans ce LinearLayout
Avez-vous essayez de modifier sa largeur à match_parent trop??
Essayez de changer la largeur de la disposition linéaire des id android:id="@+id/mainLinear" match_parent, car, enfin, point de vue interne est ajouté à celui-ci.
OUI, j'ai déjà essayé la même chose
Alors seule solution qui vient à l'esprit est le réglage de la largeur à l'exécution lors de l'affichage est rendu dans la classe d'adaptateur.
Je ne l'ai jamais essayé, mais il devrait être possible que si chaque élément de liste est une vue de radiomessagerie.
OriginalL'auteur Rohit5k2
Utiliser le scrollview en xml mise en page, puis de créer dynamiquement HorizontalScrollView à l'intérieur de la boucle:
exemple :
OriginalL'auteur Santosh Kathait