2015-07-18 3 views
-1

Я создал редактируемое настраиваемое 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

Если и хотите используйте edittext данные listview в классе адаптера ur, тогда вы должны передать этот liatview в классе адаптера, или вы можете установить этот адаптер в файле активности.

Смежные вопросы