我创建了一个列表视图,每行包含复选框和文本,我需要在列表中获取复选框为真的一些文本(选中)。我需要使用复选框传递从列表中选择的文本值。
这是我的代码:
gatwayList = (ListView) findViewById(R.id.gatwaylist);
ArrayList<HashMap<String,String>> wholeDetailsList = new ArrayList<HashMap<String,String>>();
for (int i = 0; i < 5; i++)
{
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "Test+ i");
//map.put("address", wrap_address);
wholeDetailsList.add(map);
}
SimpleAdapter wholeDetailsAdapter = new SimpleAdapter(this,
wholeDetailsList, R.layout.gatway_row, new String[] {"name"}, new int[] {R.id.gatwayId});
gatwayList.setCacheColorHint(0);
gatwayList.setAdapter(wholeDetailsAdapter);
gatway_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<CheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4px"
android:layout_alignParentLeft="true"
android:layout_marginRight="10px" >
</CheckBox>
<TextView android:id="@+id/gatwayId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ffff"
android:textSize="18dip"
android:layout_marginTop="15dip"
android:layout_marginLeft="60dip"
android:textStyle="bold"
android:textColor="#000000"/>
</RelativeLayout>
列表看起来像
在这种情况下,我必须传递所有值。否则只选择值。任何意见将不胜感激?
答案 0 :(得分:1)
使用它代替,它更好:
listView.setChoiceMode(CHOICE_MODE_MULTIPLE);
listView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, fields));
然后选择这样的选项:
listView.getCheckedItemPositions();
答案 1 :(得分:0)
我正在使用以下代码获取预期的Ui和功能
TableLayout table;
final int row = 6; //variable to get the number of row
final CheckBox cb[] = new CheckBox[row];
table = (TableLayout) findViewById(R.id.gatwaylist);
for (int i=0;i<row;i++)
{
TableRow row = new TableRow(this);
CheckBox gateway = new CheckBox(this);
gateway.setGravity(Gravity.CENTER);
// gateway.se
gateway.setTextColor(Color.BLACK);
gateway.setText("Gateway"+i);
row.addView(gateway);
View view = new View(this);
view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 2));
view.setBackgroundColor(Color.BLACK);
table.addView(row);
if(!(i == numgateways-1))
{
table.addView(view);
}
cb[i] = gateway;
}
和表布局xml元素如下:
<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">
<TableLayout android:id="@+id/gatwaylist" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"
android:transcriptMode="normal" android:headerDividersEnabled="true" android:background="@drawable/framebackground"
>
</TableLayout></ScrollView>
您可以通过任何onclick方法中的以下代码获取所选项目:
for(int i=0;i<row;i++)
{
if(cb[i].isChecked())
{
Toast.makeText(TestVideoActivity.this, "Checked :"+cb[i].getText(), Toast.LENGTH_SHORT).show();
}
} }