Я предпочитаю использовать TableLayout вместо ListView для отображения флажков, потому что флажки будут перезапускаться каждый раз, когда пользователь прокручивает просмотр списка, поэтому вам придется кэшировать все данные из флажков.Однако, если вы хотите использовать изображения или другие статические представления, можно использовать ListView.
Код будет выглядеть следующим образом для флажков и изображений, если у вас есть какой-либо метод для кэширования данных из флажков.
public class SDLibrary extends Activity {
ArrayList<LinearLayout> layout;
Context ctx;
ListView sdlistv;
private int[] bitmapArray;
String[] mFiles;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sdlay);
ctx=this;
ListView sdlistv=(ListView) findViewById(R.id.list);
layout=new ArrayList<LinearLayout>();
for(int i=0;i<bitmapArray.length;i++){
LinearLayout ll=new LinearLayout(this);
layout.add(ll);
}
CustomAdapter ca=new CustomAdapter(this, R.id.linear, layout);
sdlistv.setAdapter(ca);
sdlistv.setFadingEdgeLength(40);
}
private class CustomAdapter extends ArrayAdapter<LinearLayout>{
public CustomAdapter(Context context, int resources, List<LinearLayout> objects){
super(context, resources, objects);
}
public View getView(int position, View convertView, ViewGroup parent){
LinearLayout row;
LayoutInflater mInflater = getLayoutInflater();
if (convertView == null){
row = getItem(position);
}
else{
row = (LinearLayout) mInflater.inflate(R.layout.sdlay, null);
}
ImageView imageView =new ImageView(ctx);
CheckBox cb=new CheckBox(ctx);
imageView.setImageResource(bitmapArray[position]); //bitmapArray would be the array of images from the drawable
imgData.add(imageView);
row.addView(cb);
row.addView(imageView);
return row;
}
}
}
sdlay.xml будет выглядеть так: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<LinearLayout
android:id="@+id/linear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
</LinearLayout>
</LinearLayout>