22 개 항목이있는 데이터베이스에서 채워지는 listView가 있습니다. 데이터베이스의 항목을 listView에 바인딩하면 모든 항목이 목록에 표시됩니다.목록 아래로 항목을 선택할 때 내 ListView가 nullpointerException을 가져옵니다.
하지만 여기에 문제가 있습니다. listView에서 상위 7 개 항목 만 선택할 수 있습니다. 뷰에서 8 ~ 22 번째 항목을 선택하려고하면 nullpointerException이 발생합니다.
누구든지 왜이 문제를 해결할 수 있는지 알고 있습니까?
내 코드 목록의 항목을 선택할 때 : 목록보기에 값을 바인딩 할 때
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//ListView lv = (ListView) arg0;
TextView tv = (TextView) ((ListView) findViewById(R.id.list_view)).getChildAt(arg2);
//error here \/
if (tv == null) {
Log.v("TextView", "Null");
}
String s = tv.getText().toString();
_listViewPostion = arg2;
Toast.makeText(CustomerPick.this, "Du valde: " + s, arg2).show();
}
});
코드 :
public ArrayAdapter<Customer> BindValues(Context context){
ArrayAdapter<Customer> adapter = null;
openDataBase(true);
try{
List<Customer> list = new ArrayList<Customer>();
Cursor cursor = getCustomers();
if (cursor.moveToFirst())
{
do
{
list.add(new Customer(cursor.getInt(0), cursor.getString(1)));
}
while (cursor.moveToNext());
}
_db.close();
Customer[] customers = (Customer []) list.toArray(new Customer[list.size()]);
Log.v("PO's",String.valueOf(customers.length));
adapter = new ArrayAdapter<Customer>(context, android.R.layout.simple_list_item_single_choice, customers);
}
catch(Exception e)
{
Log.v("Error", e.toString());
}
finally{
close();
}
return adapter;
}
왜 수동으로'onItemClick()'에서'TextView'에 대한 참조를 얻고있다 : http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
코드 수정? 그냥'arg1'을 사용하십시오. – Magicode