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

  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005
  • mliskIT

    mliskIT

    29 Mart 2012