在Android中具有edittext,checkbox和textView的listview [英] listview with edittext ,checkbox and textView in android

查看:81
本文介绍了在Android中具有edittext,checkbox和textView的listview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用复选框,edittext和textview创建了一个列表视图.
使用SQL Server在listview中填充数据.但是我不能在复选框上使用onCheckedChangedListener.因此,单击复选框时,不会保存textview和edittext的相应数据.

i have created a listview with checkbox,edittext and textview.
data is populated in listview with sql server. but i am not being able to use onCheckedChangedListener on checkbox. so that on clicking the checkbox corresponding data of textview and edittext is not being saved..

我知道我在我的适配器类中的某个地方犯了错误.

i know i am doing mistake somewhere in my adapter class..

如何保存数据以及我在适配器类的onCheckedChangedListener中应该使用什么逻辑?

How to save data and what logic should i use in onCheckedChangedListener in my adapter class?

pojo类的代码

public class Model {

 public String name="";
    public boolean selected=false;
    public String score="";

    public Model(String name) { 
       this.name = name;  
       selected = false;
        score="";          
   }
            public String getName() { 
        return name;    
        }

    public void setName(String name) { 
        this.name = name; 
        }

    public boolean isSelected() {   
        return selected;    
        }

    public void setSelected(boolean selected) {    
     this.selected = selected;    
     }

    public String getScore() {     
    return score;    
    }

    public void setScore(String score) {
        this.score = score;  
        }
    }

适配器类的代码

public class MyAdapter extends ArrayAdapter<Model> {

private final List<Model> list;   
private final Activity context;

public MyAdapter(Activity context, List<Model> list)
{
   super(context, R.layout.row, list);  
   this.context = context;       
   this.list = list;   
    }

static class ViewHolder
{        
    protected TextView text; 
    protected CheckBox checkbox;        
    protected EditText scores;    
}

@Override   
public View getView(int position, View convertView, ViewGroup parent)
{        
    View view = null;   
    if (convertView == null)
    {            
        LayoutInflater inflator = context.getLayoutInflater(); 

        view = inflator.inflate(R.layout.row, null); 

        final ViewHolder viewHolder = new ViewHolder(); 
        viewHolder.text = (TextView) view.findViewById(R.id.label);    
        viewHolder.scores=(EditText) view.findViewById(R.id.txtAddress);      
        viewHolder.scores.addTextChangedListener(new TextWatcher()
        {  
            public void onTextChanged(CharSequence s, int start, int before, int count) {      
                Model element=(Model)viewHolder.scores.getTag();    
                element.setScore(s.toString());        
            }        
            public void beforeTextChanged(CharSequence s, int start, int count,int after)
            {       
            }      
            public void afterTextChanged(Editable s)
            {                              
            }
            });         
        viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);  
        viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {   
                Model element = (Model) viewHolder.checkbox.getTag(); 

                element.setSelected(buttonView.isChecked()); 



                }         
            }); 
        viewHolder.checkbox.setTag(list.get(position));      
        viewHolder.scores.setTag(list.get(position));
        view.setTag(viewHolder);   
    }
    else
    {
        view = convertView; 
        ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));  
        ((ViewHolder) view.getTag()).scores.setTag(list.get(position));   
        }                 
        ViewHolder holder = (ViewHolder) view.getTag();     
        holder.text.setText(list.get(position).getName());    
        holder.scores.setText(list.get(position).getScore());      
        holder.checkbox.setChecked(list.get(position).isSelected());     
        return view;

 } 

}

MainActivity类的代码

code for MainActivity class

public class MainActivity extends Activity { 
ListView listView;
 Button btnSave;
 Connection connect;
    ArrayAdapter<Model> adapter;
    MyConnection mycon;
    List<Model> list = new ArrayList<Model>();
    List<String>data=new ArrayList<String>();
    List<String>data2=new ArrayList<String>();
    StringBuilder sb;



    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        mycon=new MyConnection(getApplicationContext());
        listView = (ListView) findViewById(R.id.my_list);
        btnSave = (Button)findViewById(R.id.btnSave);
        sb=new StringBuilder();
        adapter = new MyAdapter(this,getModel());

        listView.setAdapter(adapter);
        if(list.isEmpty()){
            Toast.makeText(getApplicationContext(), "kuldeep", Toast.LENGTH_LONG).show();
        }

        btnSave.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                for (int i = 0; i < list.size(); i++) {
                   Toast.makeText(getBaseContext(), "Name : "+list.get(i).getName() +" Selected: "+list.get(i).isSelected()+"address: "+list.get(i).getScore().toString(), Toast.LENGTH_SHORT).show();

                }

            }
        });
            }


    private List<Model> getModel() {
        list.clear();
        try{
        Statement smt=mycon.connection().createStatement();
        ResultSet rs=smt.executeQuery("WORKINGTYPE");
        while(rs.next()){
            list.add(new Model(rs.getString("FIELD_NAME")));
        }
        }catch(Exception e){
            e.printStackTrace();
        }

                /*  list.add(new Model("kuldeep"));
                    list.add(new Model("sandeep"));
                    list.add(new Model("ravi"));
                    list.add(new Model("pradeep"));
                    list.add(new Model("praveena"));
                    list.add(new Model("ruchi"));
                    list.add(new Model("vikas"));
                    list.add(new Model("sonu"));
                    list.add(new Model("ashu"));

        */

                return list;
    }
    }

为了保存textview和EditText的数据,我应该使用什么逻辑以及我应该在Adapter clss中的什么位置写..

for saving data of textview and EditText what logic should i use and where in Adapter clss i should write it..

推荐答案

可能不是解决方案,而是建议.
最好不要在"if"条件下声明您的监听器.我的意思是,

May not be a solution, but a suggestion.
Prefer not to declare your Listeners inside an 'if' condition. What I meant is,

  • IF convertview ==空
    • 查找视图
    • IF convertview == null
      • find views
      • getTag()

      这篇关于在Android中具有edittext,checkbox和textView的listview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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