2012-04-14 4 views
0

私はAndroidが初めてで、簡単な質問があります。現在、私はユーザーがさまざまな製品を追加、削除、ブラウズできるようにする製品アプリケーションに取り組んでいます。このアプリケーションでは、定義済みのXMLベースのレイアウトファイルをテンプレートとして使用して、画面全体を塗り潰して現在の製品の詳細を表示します。ユーザーが新しい製品を追加すると、同じレイアウトファイルを再利用したいが、新しい製品の情報を入力する必要がある。また、以前に追加した商品(ArrayListなど)を保持したい場合、ユーザーは水平方向(左から右または右から左)にスライドすることでこのリストを参照できます。さて、各製品(ビュー、サブビューなど)を表現するのに最適なものと、同じXMLベースのレイアウトファイルを再利用してさまざまな製品の詳細を表示する方法を教えてください。私の英語をお許しになり、事前にお手数おかけします。XMLレイアウトファイルを再利用してさまざまな情報を表示する(Androidアプリケーション)

+0

あなたが共通のレイアウトを持っている場合は、を使ってどのような問題があり、他のすべてのレイアウトに共通のレイアウトを挿入してください –

答えて

1

ArrayAdapterを拡張する新しいクラスを作成し、getView()メソッドをオーバーライドしてカスタムレイアウトを拡張することができます。 getView()は単一の行のビューを返します。この方法でレイアウトを再利用できます。 (

// The variable products is your initial list of products. 
ProductAdapter adapter = new ProductAdapter(this, products); 
setListAdapter(adapter); 

あなたがadapter.addのいずれかを呼び出すことによって、あなたのArrayAdapterにこれを追加することができ、製品を追加:ListActivity利用のリストを表示するには

public class ProductAdapter extends ArrayAdapter<Product> { 

    private LayoutInflater li; 

    public ProductAdapter(Context context, List<Product> products) { 
     super(context, 0, products); 
     li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

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

     // Get the product of the position 
     Product product = getItem(position); 

     View v = convertView; 
     if (v == null) { 
      // Your custom layout file for a single row in the list. 
      v = li.inflate(R.layout.product_row, null); 
     } 

     // Populate your view here. Use v.findViewById(). 

     return v; 
    } 

} 

:だから、のようになります。 )(ProductAdapterの最後に商品を追加する場合)またはinsert()(ProductAdapterに新商品を挿入する商品のリストのどこに指定するか)を指定することができます。その後、adapter.notifyDataSetChanged()を呼び出して、アダプタにデータが変更されたこと、およびリストをリフレッシュする必要があることを通知できます。

1

説明している内容は、ViewPagerによって実装されています。 APIリファレンスに加えて、開発者サイトにはblog postがあります。

これを実装するには、ViewPagerの各ビューの詳細を記入するために、PagerAdapterサブクラスを作成する必要があります。

関連する問題