私はListView
自分のアプリに..ListView
テキスト、画像、またはその両方を含めることができます。画像がある場合は、最初の行にテキストを表示し、次の行に一連の画像を表示したいのですが、どちらを使用すればよいですか?? ViewFlipper
それともViewPager
何か?これを行う方法の例を探し回っています。
どんなポインタでも非常に役に立ちます!!
ありがとう。
編集: リストビューの 1 行目にテキストを表示し、2 行目に写真 (3-5) のリストを表示したい
カスタム アダプターを使用している場合は、何らかの配列をそれにフィードする必要があります。アダプター自体から ListView に別の行を追加できるとは思わないので、配列を解析するか、リストビューを作成するために使用しているデータを解析することを検討します。そこから、テキストと画像セット (存在する場合) 用の別のエントリを持つ別の配列を作成します。次に、その最終的な配列をアダプターにフィードします。JSONObjects で JSONArray を使用すると、すべてのエントリにラベルを設定できるため、より適切に機能する可能性があります。
次に、 getView() メソッドのアダプタ内で、エントリ タイプがテキストかイメージかを確認し、それに基づいてインフレートする xml レイアウトを変更します。または、同じ xml を使用して、setVisibility() で異なるビューを制御することもできます。
リスト項目内で画像を水平方向にスクロールさせたい場合は、HorizontalScrollView を使用する必要がある場合があります。使用したことはありませんが、そのスクロール要素を他のスクロール要素 (ListView) 内に配置すると、問題が発生する可能性があることはわかっています。
画像を含む ListView の作成には、3 つの主要な部分があります。1- メイン レイアウトで単純なリストビューを作成する
2- カスタム リストビュー アイテム レイアウトの作成:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"/>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="50dp" />
</LinearLayout>
次に、カスタム ListView クラスを作成します。
private final Activity context; // the context view of the list
private final String[] countries; // the list of countries
private final Integer[] imageId; // the list of images that you already uploaded to your @Drawable file (res/drawable-xdpi/)
その後にコンストラクターが続き、customView オブジェクトを作成します。
//class constructor
public CustomList(Activity context,String[] countries, Integer[] imageId)
{
super(context, R.layout.list_item, countries);
this.context = context;
this.countries = countries;
this.imageId = imageId;
}
customView クラスには、アイテム ビューを返す getView メソッドがあります。
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.list_item, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
txtTitle.setText(countries[position]);
imageView.setImageResource(imageId[position]);
return rowView;
}
最後に、mainActivity でリストのアダプターを作成します。
yourList.setAdapter(new CustomList(MainActivity.this, countries, imageId));
完全なソースコードを確認し、ここからダウンロードできます。