带有editText的Android列表视图和每个元素的复选框

时间:2016-04-11 07:44:46

标签: android listview android-edittext android-checkbox

让我们说我有一个项目列表,我想用这些项目构建一个表单。此表单由两个复选框和一个editText组成。例如,我想知道仓库中是否存在每个项目及其数量。我正在考虑使用listview来解决我的问题,其中listview的每个元素都包含一个项目的名称,两个复选框和一个editText。
问题是我知道列表视图的唯一用途是提供元素列表,我不知道如何解决我的问题(我是android的初学者)。有人能帮帮我吗? 有没有其他方法可以解决我的问题?
谢谢

1 个答案:

答案 0 :(得分:0)

尝试实现一个cusom ListView适配器!这比你想象的要容易!

首先,您需要创建代表列表中每个项目的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Test TEST" />

<LinearLayout android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignBottom="@id/itemTextView"
    android:layout_alignParentRight="true">
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/doneCheckBox" />
</LinearLayout>

然后在代码中实现cusom适配器:

public CusomAdapter(Context mainContex, YourItems<SomeItem> someItems) {
    this.mainContex = mainContex;
    this.someItems = someItems;
}

@Override
public int getCount() {
    return someItems.size();
}

@Override
public Object getItem(int position) {
    return someItems.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    View item = convertView;
    if (item == null) {
        item = LayoutInflater.from(mainContex).inflate(R.layout.shoplist_item, null); // your listView layout here!
    }

     //fill listView item with your data here!
    //initiate your check box
    CheckBox doneCheckBox = (CheckBox)item.findViewById(R.id.doneCheckBox);

    //add a checkbox listener
    doneCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         if(isChecked){
            doneCheckBox.ischecked=true;
        }
        else{
            doneCheckBox.ischecked=false;
        }
    }
});

    return item;
}
不要忘记在Activity布局中添加ListView元素!