3

画像リストビューと完全に混同しています。2 つのビデオ ポスターとテキスト ビューを背景コンテナーを使用して 1 行に表示したい (電車の画像を添付するをチェック)

縦型リストビューの単一セルです。

ここに画像の説明を入力

ビデオの数に応じて、縦方向のリスト ビューを表示する必要がありますが、各行には 2 つのビデオ ポスターとテキスト ビューが含まれており、そのビデオの横には、行番号の最初または最後に列車エンジンの画像が表示されます。

この UI を実現するために、相対レイアウトを使用して関連するイメージ ビューで列車のワゴンを表示するカスタム アダプターを作成します。

しかし、単一の行の特定のアイテム(行の特定のビデオ)のオンクリックリスナーを管理するにはどうすればよいですか。また、各行の開始または終了に列車の画像を追加するにはどうすればよいですか

これが私のコードの出力です。 ここに画像の説明を入力

これが私のコードです

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.main);
    final Context context = CustomAdapterExample.this;
    ListView ls2 = new ListView(context);
// clear previous results in the LV
    ls2.setAdapter(null);        
    // populate
    ArrayList<Device> videos = new ArrayList<Device>();
    Device my_video;
        for (int i=0;i<05;i++) {
            my_video = new Device("video link","Video id");
        videos.add(my_video);
        }
    CustomAdapter lvAdapter =  new CustomAdapter(context, videos);
    ls2.setAdapter(lvAdapter);
    ls2.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) 
        {
            Toast.makeText(getBaseContext(), "You clicked on "+arg2, Toast.LENGTH_LONG).show();
        }
    });
     setContentView(ls2);
}

そしてこちらがアダプター

class CustomAdapterView extends LinearLayout {        
public CustomAdapterView(Context context, Device device) 
{
    super( context );   
    //container is a horizontal layer
     setOrientation(LinearLayout.HORIZONTAL);
    setPadding(0, 6, 0, 6);
    LinearLayout Mainview = new LinearLayout(context);
    LinearLayout.LayoutParams Cellparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    Mainview.setLayoutParams(Cellparams);
    ImageView firstImageContainer = new ImageView(context);
    ImageView trackImage = new ImageView(context);
    ImageView VideoViewContainer = new ImageView(context);
    TextView firsttext= new TextView(context);
    firsttext.setText("Testing of app");
    firsttext.setTextColor(Color.RED);
    firstImageContainer.setBackgroundResource(R.drawable.wagon); 
    VideoViewContainer.setBackgroundResource(R.drawable.video); 
    RelativeLayout layout = new RelativeLayout(context);
     RelativeLayout.LayoutParams firstContainerParams = new RelativeLayout.LayoutParams(160, 80);
     layout.setLayoutParams(firstContainerParams);
     trackImage.setBackgroundResource(R.drawable.line);
     RelativeLayout.LayoutParams trackRules = new RelativeLayout.LayoutParams(755,5); 
     trackRules.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    RelativeLayout.LayoutParams firstImageContainerParams = new RelativeLayout.LayoutParams(140, 90);
     RelativeLayout.LayoutParams VideoViewContainerParams = new RelativeLayout.LayoutParams(70,60); 
     VideoViewContainerParams.addRule(RelativeLayout.CENTER_VERTICAL);
     VideoViewContainerParams.setMargins(5, 0, 0, 0);
     layout.addView(firstImageContainer, firstImageContainerParams);
     layout.addView(VideoViewContainer, VideoViewContainerParams);
     layout.addView(trackImage, trackRules);
     ImageView secondImageContainer = new ImageView(context);
    ImageView secondtrackImage = new ImageView(context);
    ImageView secondVideoViewContainer = new ImageView(context);
    secondImageContainer.setBackgroundResource(R.drawable.wagon); 
    secondVideoViewContainer.setBackgroundResource(R.drawable.video); 
    RelativeLayout secondLayout = new RelativeLayout(context);
     RelativeLayout.LayoutParams secondContainerParams = new RelativeLayout.LayoutParams(160, 80);
    secondLayout.setLayoutParams(firstContainerParams);
    secondtrackImage.setBackgroundResource(R.drawable.line);
     RelativeLayout.LayoutParams secondtrackRules = new RelativeLayout.LayoutParams(755,5); 
     trackRules.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    RelativeLayout.LayoutParams secondImageContainerParams = new RelativeLayout.LayoutParams(140, 90);
     RelativeLayout.LayoutParams secondVideoViewContainerParams = new RelativeLayout.LayoutParams(70,60); 
    secondVideoViewContainerParams.addRule(RelativeLayout.CENTER_VERTICAL);
    secondVideoViewContainerParams.setMargins(5, 0, 0, 0);
    secondLayout.addView(secondImageContainer, secondImageContainerParams);
    secondLayout.addView(secondVideoViewContainer, secondVideoViewContainerParams);
    secondLayout.addView(secondtrackImage, secondtrackRules);
     firstContainerParams.addRule(RelativeLayout.ALIGN_LEFT);
     secondImageContainerParams.addRule(RelativeLayout.ALIGN_RIGHT);
    Mainview.addView(layout,firstContainerParams);
    Mainview.addView(secondLayout,secondContainerParams);
    addView(Mainview);
}
     }
  public class CustomAdapter extends BaseAdapter /*implements OnClickListener*/ {
public static final String LOG_TAG = "BI::CA";
private Context context;
private List<videoData> videolist;
public CustomAdapter(Context context, List<Device> videolist ) { 
    this.context = context;
    this.videolist = videolist;
}
public int getCount() {                        
    return videolist.size();
}
public Object getItem(int position) {     
    return videolist.get(position);
}
public long getItemId(int position) {  
    return position;
}
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    Device device = videolist.get(position);
    View v = new CustomAdapterView(this.context, device );  
    return v;
}
}

私の実装が間違っている場合は、いくつかのガイダンスを提案してください。gallery は API 17 で非推奨になり、使用できません。

tableview や grid view を使ってそのような Ui をクレートすることはできますか??

どんな助けでも大歓迎です。

4

2 に答える 2

2

最後に、リスト ビュー レイアウトで [Include タグ] を使用して、他のデバイスと同じようにすべての内容を表示するようにします。

<HorizontalScrollView
    android:id="@+id/horizontalScrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <include android:id="@+id/train2" layout="@layout/train2" />
</HorizontalScrollView>

電車の中で私はこれを持っています

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
    <include android:id="@+id/boogi1" layout="@layout/boogi" />
    <include android:id="@+id/boogi2" layout="@layout/boogi" />
     <include android:id="@+id/engine" layout="@layout/engine" />

そして、私が使用した各画像ビューとテキストビューにアクセスするには

 ImageView v1 = ((ImageView)vi.findViewById(R.id.train).findViewById(R.id.boogi1).findViewById(R.id.imageView1));

サポートありがとうございます。行の位置に応じて、すべての行のビューを変更することが可能です..

于 2013-04-15T09:17:53.630 に答える
0

カスタムリストビューを試す必要があると思います、、、これを試して ください http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/

于 2013-04-11T13:35:41.230 に答える