SORU
19 HAZİRAN 2012, Salı


Liste görünümü addHeaderView pozisyon bir artış olur?

Aşağıda bir liste Görünümü ile bir kod parçası. Bir emptyView ve bir headerView ekledim. Bu headerView ekleme onİtemClick pozisyonu bir artış neden olur.

Bu headerView olmadan ilk liste öğesinin konumu ilk liste öğesinin konumu 1 olur headerView ile 0, olurdu!

Bu benim adaptör hataları getıtem çağırırken, örneğin neden() ve diğer bazı yöntemler kullanarak, aşağıya bakın. Garip şey: getView() ilk liste öğesi ise headerView eklenirse bile pozisyon 0 ile istenen adaptörün yöntemi!!

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ListView list = (ListView) viewSwitcher.findViewById(R.id.list);
    View emptyView = viewSwitcher.findViewById(R.id.empty);
    list.setEmptyView(emptyView);

    View sectionHeading = inflater.inflate(R.layout.heading, list, false);
    TextView sectionHeadingTextView = (TextView) sectionHeading.findViewById(R.id.headingText);
    sectionHeadingTextView.setText(headerText);
    list.addHeaderView(sectionHeading);

    list.setAdapter(listAdapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            listAdapter.getItem(position);
            //Do something with it
        }
    });
}

Bazı adaptörü yöntemleri:

@Override
public int getViewTypeCount() {
    return TYPE_COUNT;
}

@Override
public int getItemViewType(int position) {
    return (position < items.size()) ? ITEM_NORMAL : ITEM_ADVANCED;
}

    @Override
public Product getItem(int position) {
    return items.get(position);
}
@Override
public boolean areAllItemsEnabled() {
    return false;
}

@Override
public boolean isEnabled(int position) {
    return (position < items.size());
}

Bu bir headerView eklerken normal bir davranış mı? Ve nasıl benim adaptör sorunları aşmak için?

CEVAP
15 Kasım 2012, PERŞEMBE


Ben sadece bu sorunla karşılaştım ve en iyi yolu ListView sürümü başlıkları, yani hesapları ListAdapter.getItem(position) yerine ListView.getItemAtPosition(position) kullanmak gibi görünüyor:-

Bunun yerine:

myListView.getItemAtPosition(position)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EminemVEVO

    EminemVEVO

    12 Mayıs 2009
  • engineerguy

    engineerguy

    10 Ocak 2010
  • sghaff1

    sghaff1

    23 Mart 2009