2012-12-04 4 views
0

J'ai essayé pendant un moment maintenant mais je n'arrive toujours pas à le faire correctement. Je peux ajouter un en-tête personnalisé à une liste, mais je ne peux pas ajouter une disposition de ligne personnalisée à une liste. Je veux que chaque rangée de la liste ait la disposition du fichier "listitemrow.xml" mais je n'arrive pas à comprendre comment faire cela malgré la lecture de plusieurs tutoriels.Ajouter une disposition personnalisée à la rangée de listage

Voici mon code

public class PortfolioFragMent extends android.app.ListFragment{ 
    private String[] ShareholdingNames; 
    private ListView mainListView ; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 

     ListView listView = new ListView(getActivity()); 
     super.onCreate(savedInstanceState); 

     ViewGroup header = (ViewGroup)inflater.inflate(R.layout.listviewheader, listView, false); 
     listView.addHeaderView(header, null, false); 

     ViewGroup listrow = (ViewGroup)inflater.inflate(R.layout.listitemrow, listView, false); 
//listView.add(listitemrow); I want to do something like this 

     ArrayAdapter<String> array = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1); 
     setListAdapter(array); 
     ShareholdingNames= ShareholdingNames(); 

     for (String str : ShareholdingNames) 
      array.add(str); 
     listView.setAdapter(array); 
     return listView; 
    } 

    private String[] ShareholdingNames(){ 
     ShareholdingNames = new String[Portfolio.getPortfolio().count()]; 
     for(int i=0; i < Portfolio.getPortfolio().count(); i++){ 
      ShareholdingNames[i]= Portfolio.getPortfolio().getShareHolding(i).getName(); 
     } 
     return ShareholdingNames; 
    } 

    public void onListItemClick(ListView l, View v, int position, long id) { 
     Intent intent = new Intent(getActivity().getApplicationContext(), 
     DetailShareHoldingActivity.class); 
     intent.putExtra("new_variable_name","value"); 
     intent.putExtra("bookPositionInList",position); 
     startActivity(intent); 
    } 
} 

Répondre

4

Pour ce faire, vous devez ajouter votre propre adaptateur personnalisé et ajoutez la ligne

ViewGroup listrow = (ViewGroup)inflater.inflate(R.layout.listitemrow, listView, false); 

dans getView de l'adaptateur méthode ..

public class ListAdapter extends ArrayAdapter<Item> { 

public ListAdapter(Context context, int textViewResourceId) { 
super(context, textViewResourceId); 
// TODO Auto-generated constructor stub 
} 

private List<Item> items; 

public ListAdapter(Context context, int resource, List<Item> items) { 

super(context, resource, items); 

this.items = items; 

} 

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

View v = convertView; 

if (v == null) { 

    LayoutInflater vi; 
    vi = LayoutInflater.from(getContext()); 
    v = vi.inflate(R.layout.listitemrow, listView, false); 

} 

... 
return v; 

} 
} 
Questions connexes