0
안녕하세요, 사용자 지정 ArrayList 어댑터가있는 대화 상자에서 ListView를 만들고 싶습니다. 항목을 클릭하여 개체를 검색 할 수 있습니다. 대화 상자의 listView에 대한 Android CustomAdapter
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/singleItemDialogList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:textStyle="bold"
android:textSize="22dp"
android:textColor="#FFFFFF"
android:padding="10dp"
android:background="#336699" />
</LinearLayout>
내가 내 사용자가 목록보기에 항목에 대한 사용자 레이아웃 생성 다이얼로그
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/dialogListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#b5b5b5"
android:dividerHeight="1dp" />
</LinearLayout>
에 대한리스트 뷰 요소와 레이아웃 만들기 : 내가 무슨 짓을
는 후속이다 어댑터
public class AddressBookAdapter extends BaseAdapter {
private List<AddressBook> objects;
private LayoutInflater layoutInflater;
public AddressBookAdapter(Context context, List<AddressBook> objects) {
this.objects = objects;
layoutInflater = LayoutInflater.from(context);
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.dialog_list_layout, null);
holder = new ViewHolder();
holder.simpleItemDialog = (TextView) convertView.findViewById(R.id.singleItemDialogList);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.simpleItemDialog.setText(objects.get(position).getAddress());
return convertView;
}
@Override
public int getCount() {
return objects.size();
}
@Override
public AddressBook getItem(int position) {
// TODO Auto-generated method stub
return objects.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
static class ViewHolder {
TextView simpleItemDialog;
}
}
마지막으로 어디에서 다이얼로그 g 지금 어댑터
final Dialog dialog = new Dialog(this);
View view = getLayoutInflater().inflate(R.layout.dialog_list_layout, null);
ListView lv = (ListView) view.findViewById(R.id.dialogListView);
AddressBookAdapter aba = new AddressBookAdapter(Logged.this, cachedData.getAddressBookList());
Log.w("ABA",""+aba.getCount());
lv.setAdapter(aba);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.w("CLICK","ITEM");
}
});
dialog.setContentView(view);
dialog.show();
확인을 설정 내가 대화 상자를 열 때 오류 얻을 : AddressBookAdapter.getView (라인 38)에 NullPointerException이 포인트를 -> 라인 38은 다음과 같습니다 holder.simpleItemDialog.setText(objects.get(position).getAddress());
당신에게
감사
라인 38 이전에 오브젝트를 놓으면'objects.get (position)'은 실제로 오브젝트를 반환합니까? getAddress()가 null을 반환하면 그 원인이 가장 높습니다. –
예, 제가 가지고있는 객체의 수를 표시하여 시도했기 때문에 객체가 채워집니다. –
Log.d ("AddressBookAdapter", "getAddress()"+ objects.get (position) .getAddress());'시도한 다음 logcat을 검사하여 'null'이 아닌 'String'을 반환하는지 확인하십시오. 코드의 다른 부분에는 문제가 나타나지 않습니다. –