当我滚动的ListView android的复选框取消选中 [英] checkbox unchecked when i scroll listview in android

查看:95
本文介绍了当我滚动的ListView android的复选框取消选中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新android开发。我创建了一个列表视图文本复选框
当我检查复选框并滚动下来检查列表视图中的一些其他项目,老的都没有选中。照片如何避免<$这个问题C $ C>列表视图?请指导我与我的code。
这里是code:

I am new to android development. I created a listview with textbox and checkbox.
When I check the checkbox and scroll it down to check some other items in the list view, the older ones are unchecked.
How to avoid this problem in listview? Please guide me with my code.
Here is the code:

main.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">
<TextView android:id="@+id/TextView01" android:layout_height="wrap_content"
    android:text="List of items" android:textStyle="normal|bold"
    android:gravity="center_vertical|center_horizontal"
    android:layout_width="fill_parent"></TextView>
<ListView android:id="@+id/ListView01" android:layout_height="250px"
    android:layout_width="fill_parent">
</ListView>
<Button android:text="Save" android:id="@+id/btnSave"
    android:layout_width="wrap_content" android:layout_height="wrap_content">
</Button>

</LinearLayout>


这是XML页面我用来创建动态列表行:


This is the xml page I used to create dynamic list row:

listview.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:gravity="left|center"
android:layout_width="wrap_content" android:paddingBottom="5px"
android:paddingTop="5px" android:paddingLeft="5px">
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:gravity="center"
    android:textColor="#FFFF00" android:text="hi"></TextView>
<TextView android:text="hello" android:id="@+id/TextView02"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:layout_marginLeft="10px" android:textColor="#0099CC"></TextView>
<EditText android:id="@+id/txtbox" android:layout_width="120px"
    android:layout_height="wrap_content" android:textSize="12sp"
    android:layout_x="211px" android:layout_y="13px">
</EditText>
<CheckBox android:id="@+id/chkbox1" android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
</LinearLayout>


这是我的活动课。


This is my activity class.

CustomListViewActivity.java:

public class CustomListViewActivity extends Activity {
ListView lstView;
static Context mContext;
Button btnSave;
private static class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;

public EfficientAdapter(Context context) {
    mInflater = LayoutInflater.from(context);

}

public int getCount() {
    return country.length;
}

public Object getItem(int position) {
    return position;
}

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

public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.listview, parent,
                false);
        holder = new ViewHolder();
        holder.text = (TextView) convertView
                .findViewById(R.id.TextView01);
        holder.text2 = (TextView) convertView
                .findViewById(R.id.TextView02);
        holder.txt = (EditText) convertView.findViewById(R.id.txtbox);
        holder.cbox = (CheckBox) convertView.findViewById(R.id.chkbox1);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.text.setText(curr[position]);
    holder.text2.setText(country[position]);
    holder.txt.setText("");
    holder.cbox.setChecked(false);

    return convertView;
}

public class ViewHolder {
    TextView text;
    TextView text2;
    EditText txt;
    CheckBox cbox;
}
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lstView = (ListView) findViewById(R.id.ListView01);
lstView.setAdapter(new EfficientAdapter(this));
btnSave = (Button)findViewById(R.id.btnSave);
mContext = this;

btnSave.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // I want to print the text which is in the listview one by one. 
        //Later i will insert it in the database
//            Toast.makeText(getBaseContext(), "EditText Value, checkbox value and other values", Toast.LENGTH_SHORT).show();
        for (int i = 0; i < lstView.getCount(); i++) {
            View listOrderView;
            listOrderView = lstView.getChildAt(i);
            try{
                EditText txtAmt = (EditText)listOrderView.findViewById(R.id.txtbox);
                CheckBox cbValue = (CheckBox)listOrderView.findViewById(R.id.chkbox1);
                if(cbValue.isChecked()== true){
                    String amt = txtAmt.getText().toString();
                    Toast.makeText(getBaseContext(), "Amount is :"+amt, Toast.LENGTH_SHORT).show();
                }

            }catch (Exception e) {
                // TODO: handle exception
            }
        }

    }
});
}

private static final String[] country = { "item1", "item2", "item3",
    "item4", "item5", "item6","item7", "item8", "item9",
    "item10", "item11", "item12" };
private static final String[] curr = { "1", "2", "3", "4", "5", "6","7", "8", "9", "10", "11", "12" };

}

请帮我解决售后服务这个问题。
我已经提到在很多地方。但我无法得到正确的答案来解决这个问题。请提供给我的code,以避免取消选中该复选框,同时向上和向下滚动。

Please help me to slove this problem.
I have referred in many places. But I could not get proper answer to solve this problem.
Please provide me the code to avoid unchecking the checkbox while scrolling up and down.

感谢你。

推荐答案

我写了一个博客,同样,之所以会出现这种情况,也是我所附着的来源相同。所以,你可以从<一个得到它href="http://www.lalit3686.blogspot.in/2012/06/today-i-am-going-to-show-how-to-deal.html">ListView使用复选框滚动发行

I had written a blog for the same that why does this happen and also I had attached the source for the same. So, you can get it from ListView with CheckBox Scrolling Issue

这篇关于当我滚动的ListView android的复选框取消选中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆