我想更新自定义列表视图中的单行。我不是在编写完整的代码,因为它太长了。只写足够的部分。
我的列表视图显示正确 我也知道如何更新单行。
由于空指针异常,我无法继续使用我的代码..请帮助!!!
ProductList.java
public class ProductList extends ListActivity {
ListView listProduct;
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_product_list);
listProduct = getListView();
ProductAdapter productAdapter;
productAdapter = new ProductAdapter(ProductList.this,
R.layout.productlistview, addedList);
listProduct.setAdapter(productAdapter);
}
public void updateList(Context context){
int a = listProduct.getFirstVisiblePosition(); // Here I get Null Pointer Exeption
Toast.makeText(context,
a + " is listadapter " ,
Toast.LENGTH_SHORT).show();
}
}
ProductAdapter.java
public class ProductAdapter extends ArrayAdapter<SetGetProduct> {
// initialization codes
//getView() method - This properly displays my custom list view
// On the list view I have an ADD - Button
// On pressing that button a dialog box appears to enter new quantity.
// I want to update the new quantity to the purticular row
final Dialog quantityDialog = new Dialog(context);
quantityDialog.setContentView(R.layout.quantity_customdialogue);
quantityDialog.setTitle("Enter Quantity :");
final EditText et_cus_quantity = (EditText) quantityDialog
.findViewById(R.id.et_cusdialog_quantity);
Button btn_quantityOK = (Button) quantityDialog
.findViewById(R.id.btn_custom_quantityOK);
btn_quantityOK.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
quantityDialog.dismiss();
new ProductList().updateList(context);
}
}
}
答案 0 :(得分:5)
您无法使用Activity/ListActivity
创建new operator
的实例并访问它。
new ProductList().updateList(context);
//这是访问Activity实例的错误方法
相反,您可以在getView()
方法中更新Adapter类本身中的ListView行。
OR
您可以在其构造函数中的Adapter类中传递Activity
的实例来访问它。
答案 1 :(得分:0)
NullPointerException的原因是:
ListView listProduct;在onCreate方法中初始化,当你调用updateList mehtod时,你正在通过new创建ProductList的新实例,因此没有调用它的onCreate方法,并且listProduct没有被初始化并保持为null。
您可以尝试的一种方法是在ProductList Activity中创建OnClickListener并将其传递给适配器并将其设置为btn_quantityOK。并从onclickListener调用updateList方法。
我希望这会有所帮助。