2017-10-11 4 views
-1

J'ai un ListViewAndroid ListView à onglets horizontale

<ListView 
    android:id="@+id/group" 
    android:layout_width="264dp" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true"/> 

ListView gvGroup = ((ListView)findViewById(R.id.group)); 
    gvGroup.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
      details=fManager.getPageItems(fMenu,(int) id); 
      ((BaseAdapter)gvDetail.getAdapter()).notifyDataSetChanged(); 
     } 
    }); 
    gvGroup.setAdapter(new GroupListAdapter()); 
    gvGroup.postDelayed(new Runnable() { 
     public void run() { 
      gvGroup.setItemChecked(0, true); 
     } 
    }, 50); 

et l'adaptateur est

private final class GroupListAdapter extends BaseAdapter{ 
    public int getCount() {return groups!=null?groups.size():0;} 
    public Object getItem(int position) {return groups.get(position);} 
    public long getItemId(int position) {return groups.get(position).Id;} 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView tv=(TextView) convertView; 
     if(tv==null){ 
      float size_font_dp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 28, getResources().getDisplayMetrics()); 
      float width_dp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 72, getResources().getDisplayMetrics()); 
      tv = new TextView(MyClass.this); 
      tv.setBackgroundResource(R.drawable.list_selector); 
      tv.setTextSize(size_font_dp);tv.setTypeface(Typeface.DEFAULT_BOLD); 
      tv.setSingleLine();tv.setGravity(Gravity.CENTER_VERTICAL); 
      AbsListView.LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,(int)(width_dp));    
      tv.setLayoutParams(lp); 
     } 
     tv.setText(((FPage)getItem(position)).Name); 
     return tv; 
    } 
} 

Mon problème est que je dois transformer cette ListView en une horizontale, qui peut être défilée. J'ai essayé de changer mon ListView à un android.support.v4.view.ViewPager mais la même carte ne fonctionne pas. Existe-t-il un moyen de changer le ListView qui agit comme un TabControl en un horizontal?

Je suis nouveau dans la programmation Android donc s'il vous plaît soyez gentil :)

+0

Avez-vous essayé d'utiliser à la place 'RecyclerView'? –

+0

Je l'ai regardé mais je n'ai pas compris exactement comment cela fonctionne, c'est pourquoi j'ai essayé avec ViewPager – Dana

+1

Vous avez besoin d'apprendre de nouvelles choses, malgré les difficultés. –

Répondre

1

Vous pouvez obtenir le résultat désiré à l'aide RecyclerView. Vous pouvez trouver un exemple de RecyclerView de ce lien: http://www.androhub.com/android-staggered-and-horizontal-recyclerview/

Pour créer une liste horizontale avec RecyclerView, vous pourriez faire quelque chose comme ceci:

final LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); 

    final RecyclerView myList = (RecyclerView) findViewById(R.id.recycler_view); 
    myList.setLayoutManager(layoutManager);