我需要一个具有多个可点击条目的列表视图。但是,其中的一些在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/