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

  • amc

    amc

    21 EYLÜL 2005
  • Kyletiv7

    Kyletiv7

    28 Mayıs 2007
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012