Null Pointer使用getListView()更新自定义列表视图中的单行时出现异常

时间:2013-12-05 07:16:51

标签: android android-listview

我想更新自定义列表视图中的单行。我不是在编写完整的代码,因为它太长了。只写足够的部分。

我的列表视图显示正确 我也知道如何更新单行。

由于空指针异常,我无法继续使用我的代码..请帮助!!!

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);

}
}

}

2 个答案:

答案 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方法。

我希望这会有所帮助。