我需要一个具有多个可点击条目的列表视图。但是,其中的一些在asynctask释放它们之前是不活动的。我应该如何最好地做到这一点?首先,我想到了一个带有布尔值的单独的ArrayList,但这似乎有点便宜。有没有办法扩展StableArrayAdapter?

这是我当前的适配器

import android.content.Context;
import android.widget.ArrayAdapter;

import java.util.HashMap;
import java.util.List;

public class StableArrayAdapter extends ArrayAdapter<String> {

        HashMap<String, Integer> mIdMap = new HashMap<>();

        public StableArrayAdapter(Context context, int textViewResourceId,
                                  List<String> objects) {
            super(context, textViewResourceId, objects);
            for (int i = 0; i < objects.size(); ++i) {
                mIdMap.put(objects.get(i), i);
            }
        }

        @Override
        public long getItemId(int position) {
            String item = getItem(position);
            return mIdMap.get(item);
        }

        @Override
        public boolean hasStableIds() {
            return true;
        }
}

最佳答案

覆盖适配器中的isEnabled()。对于最初不应该单击的项目,您可以返回false。然后,当AsyncTask完成时,您可以在onPostExecute()中调用在适配器上定义的其他方法来启用这些项目,从这时起,isEnabled()实现应针对这些项目返回true。

关于java - 具有 Activity 和非 Activity 条目的Android ListView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32196837/

10-10 10:07