在ListView内的EditText /复选框文字/值 [英] EditText/Checkbox text/value inside the ListView

查看:197
本文介绍了在ListView内的EditText /复选框文字/值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个的ListView 和列表视图里面,的EditText 或复选框是指在第7行chekbox然后EDITTEXT为其他行可见。现在,我想这里面点击复选框第一7行的EditText'为行的其余文本按钮被点击时,这些行的值。
但问题是,为的EditText和复选框指数,因为它是在的ListView ..

我怎样才能在一个按钮的点击价值或全部的行的文字...

 公共查看getView(INT位置,查看convertView,父母的ViewGroup){
    查看VI = convertView;
    ViewHolder持有人;    如果(convertView == NULL){        //充气每一行tabitem.xml文件(定义如下)
        VI = inflater.inflate(R.layout.tabitem,NULL);        //查看Holder对象包含tabitem.xml文件元素
        持有人=新ViewHolder();
        holder.text =(TextView中)vi.findViewById(R.id.textView1);        holder.check =(复选框)vi.findViewById(R.id.checkBox1);
        holder.text2 =(EditText上)vi.findViewById(R.id.editText1);
        holder.text2.setTag(1);
        INT position12 =(整数)holder.text2.getTag();
        System.out.print(position12 +值);        //与LayoutInflater设置架
        vi.setTag(保持器);        J ++;        如果(J< 8){
            holder.text2.setVisibility(View.INVISIBLE);
            holder.check.setX(-150);
        }
        其他{
             holder.check.setVisibility(View.INVISIBLE);
        }
    }
    其他{
        支架=(ViewHolder)vi.getTag();
    }    holder.text2.getText();
    如果(data.size()&下; = 0){
        holder.text.setText(无数据);
        holder.text2.getText();
        // Log.v(BBBB,holder.text2.getText()的toString());
    }
    其他{
        //从ArrayList中每个模型对象
        tempValues​​ = NULL;
        tempValues​​ =(ListModel的)data.get(位置);        //设置模型值保持元件
        holder.text.setText(tempValues​​.getCompanyName());
        holder.text2.getText();        //设置项目点击听者的LayoutInflater每一行
        vi.setOnClickListener(新OnItemClickListener(位置));
    }    Log.v(DDD,holder.text2.getText()的toString());
    返回VI;
}


解决方案

我建议你到ID设置为每EditText上在code。这样的: holder.text2.setId(位置);
你应该把它放到你的其他,我的意思是在此之后: / ************集模型值架元素*********** /

此方式,您将始终能够从所有获得您的文字像的EditText这样的:

 的for(int i = 0; I< data.size();我++){
等的EditText =(EditText上)vi.findViewById(I)
如果(ET!= NULL)
//从的EditText文本
}

I have a ListView and inside that listview , EditText or 'CheckBox' means chekbox for the first 7 rows then Edittext is visible for other rows. Now I want the values of these rows which is clicked inside Checkbox in first 7 rows and 'EditText' text for rest of the rows when Button is clicked. But problem is index for the EditText and Checkbox as it is in ListView..

How can i get value or text of all the row in single button click...

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    ViewHolder holder;

    if(convertView==null){ 

        //Inflate tabitem.xml file for each row ( Defined below ) 
        vi = inflater.inflate(R.layout.tabitem, null); 

        // View Holder Object to contain tabitem.xml file elements
        holder=new ViewHolder();
        holder.text=(TextView)vi.findViewById(R.id.textView1);

        holder.check =(CheckBox)vi.findViewById(R.id.checkBox1);
        holder.text2=(EditText)vi.findViewById(R.id.editText1);
        holder.text2.setTag(1);
        int position12 = (Integer)holder.text2.getTag();
        System.out.print(position12 + "value");

        //  Set holder with LayoutInflater 
        vi.setTag(holder);            

        j++;

        if(j<8){
            holder.text2.setVisibility(View.INVISIBLE);
            holder.check.setX(-150);
        }
        else{
             holder.check.setVisibility(View.INVISIBLE);
        }
    }
    else {  
        holder=(ViewHolder)vi.getTag();
    }

    holder.text2.getText();
    if(data.size()<=0) {
        holder.text.setText("No Data");
        holder.text2.getText();
        // Log.v("BBBB",  holder.text2.getText().toString());
    }
    else {
        // Get each Model object from Arraylist
        tempValues=null;
        tempValues = (ListModel) data.get(position);

        // Set Model values in Holder elements
        holder.text.setText(tempValues.getCompanyName());
        holder.text2.getText();

        // Set Item Click Listner for LayoutInflater for each row 
        vi.setOnClickListener(new OnItemClickListener(position));
    }

    Log.v("DDD",  holder.text2.getText().toString());
    return vi;
}

解决方案

I recommend you to set the id to every EditText in code. Like: holder.text2.setId(position); You should put it into your else, I mean after this: /************ Set Model values in Holder elements ***********/

This way you will be always able to get text from all your EditText like this:

for(int i=0;i<data.size();i++){
EditText et=(EditText)vi.findViewById(i);
if(et!=null)
//Get the text from EditText
}

这篇关于在ListView内的EditText /复选框文字/值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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