0

しばらく試してみましたが、まだうまくいかないようです。リストビューにカスタムヘッダーを追加することはできますが、リストにカスタム行レイアウトを追加することはできません。リストの各行にファイル「listitemrow.xml」のレイアウトを設定したいのですが、複数のチュートリアルを読んだにもかかわらず、その方法を完全に理解していないようです。

これが私のコードです

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);  
    }
}
4

1 に答える 1

4

これを行うには、独自のカスタムアダプターを追加し、行を追加する必要があります

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

アダプタのgetViewメソッドに。

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;

}
}
于 2012-12-04T13:37:23.563 に答える