如何从可编辑的列表视图中获取编辑文本值

时间:2015-07-18 07:41:48

标签: android android-listview

我创建了一个可编辑的自定义列表视图,其中包含listview外部的按钮。我想保存用户在按钮单击时输入的editText值。我的编辑文本在基础适配器类中,我的列表和按钮在活动类中,我从列表中访问编辑文本时遇到问题,我的代码由于空指针异常而崩溃

public class ProductsList  extends Activity{

ProductListAdapter dataAdapter;
ProgressDialog progressDialog=null;
ListView listView;
UserSQLiteDB usersqlite_obj;
ArrayList<Products> prodlist;
EditText edChemistName, edChemistAddr; 
Button btnSave;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.productlist); 

    edChemistName = (EditText) findViewById(R.id.editText1);
    edChemistAddr = (EditText) findViewById(R.id.editText2);
    btnSave =(Button)findViewById(R.id.button1);
    listView = (ListView)findViewById(R.id.listView1);
    usersqlite_obj = new UserSQLiteDB(this);
    progressDialog = ProgressDialog.show(this, "Saved","Please wait...", true);
    //  new Thread() {
    runOnUiThread(new Runnable() {
    public void run() {
            try{
                usersqlite_obj.open();
                prodlist = new ArrayList<Products>();
                prodlist = usersqlite_obj.getProductsList();
                Log.e("prodlist", "1");
                dataAdapter = new ProductListAdapter(ProductsList.this,prodlist);
                listView.setAdapter(dataAdapter);
                usersqlite_obj.close(); 

            }  catch (Exception e) {

                Log.d("error",e.getMessage());
            }
            dismissLoadingDialog();
    }
    });  

}
  public void buttonClick(View V) {

        for(int i=0;i<listView.getCount();i++){

               View row = listView.getChildAt(i);
               Log.e("editText clicked", "yes");
               EditText editText= (EditText) row.findViewById(R.id.ed);
               if (editText.length()>0){
                   String text = editText.getText().toString();
                   Log.e("extracted text", "text");
               }
        }

1 个答案:

答案 0 :(得分:1)

如果你想在你的适配器类中使用listview的edittext数据,那么你应该在适配器类中传递这个liatview,或者你可以在激活文件中设置这个适配器。