我将arrayList设置为12项,但是arrayAdapter在屏幕上只返回一项,这是为什么?它应该在列表中显示12个项目。
public class MainActivity extends Activity {
ArrayList<CheckBoxInfo> cfo = new ArrayList<CheckBoxInfo>();
CheckBoxInfo cbr;
private ListAdapter MyAdapter;
ListView listview;
MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cbr = new CheckBoxInfo();
cbr.checkBoxName = "dfdjklfjdkljf";
cbr.checkBoxState = true;
for(int i = 0; i <12; i++){
cfo.add(cbr);
}
Toast.makeText(MainActivity.this, "size: " + cfo.size(), Toast.LENGTH_SHORT).show();
listview = (ListView) findViewById(R.id.listView);
myAdapter = new MyAdapter(cfo, this);
listview.setAdapter(myAdapter);
}
public class MyAdapter extends ArrayAdapter<CheckBoxInfo> {
private List<CheckBoxInfo> checkBoxList;
private Context context;
public MyAdapter(List<CheckBoxInfo> infoList, Context context) {
super(context, R.layout.row_layout, infoList);
this.checkBoxList = infoList;
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
// First let's verify the convertView is not null
if (convertView == null) {
// This a new view we inflate the new layout
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row_layout, parent, false);
}
// Now we can fill the layout with the right values
TextView tv = (TextView) convertView.findViewById(R.id.textView1);
CheckBox cb = (CheckBox) convertView.findViewById(R.id.checkBox1);
CheckBoxInfo cbi = checkBoxList.get(position);
Toast.makeText(MainActivity.this, "position: " + position, Toast.LENGTH_SHORT).show();
tv.setText(cbi.checkBoxName);
return convertView;
}
} // end MyAdapter
}
row_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" " />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
发布于 2013-04-09 14:01:14
发现问题出在xml布局中的ScrollView中,一旦删除了外部的ScrollView,ListView的所有项都会显示出来。
出于某种原因,如果封装嵌套在多个图层中的ListView,如果ListView位于ScrollView中,则只会显示一个position项
发布于 2013-04-08 17:22:44
覆盖MyAdapter
中的getCount
public int getCount() {
return infoList == null ? 0 : infoList.size();
}
发布于 2013-04-08 17:25:34
请显示row_layout
的代码,我认为您的错误是for
循环:
尝试创建2个复选框,并将手动添加到测试中:
cbr1 = new CheckBoxInfo();
cbr1.checkBoxName = "checkbox1";
cbr1.checkBoxState = true;
cfo.add(cbr1);
cbr2 = new CheckBoxInfo();
cbr2.checkBoxName = "checkbox2";
cbr2.checkBoxState = true;
cfo.add(cbr2);
https://stackoverflow.com/questions/15875552
复制相似问题