【发布时间】:2019-03-18 03:51:52
【问题描述】:
我想从数据库中过滤ArrayList。这是我过滤数组的代码:
if (miId == 2) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.item_list_asistencia, viewGroup, false);
return new MetaViewHolder(v, this);
} else {
return null;
}
它运行良好,但问题是当miId != 2 时,它执行null 并且我收到此错误
尝试从空对象上的“android.view.View >android.support.v7.widget.RecyclerView$ViewHolder.itemView”字段读取>reference
它的另一种回报的可能性?
创建数组之前:
public void cargarAdaptador() {
// Petición GET
Log.d("DIATX", String.valueOf(11));
VolleySingleton.
getInstance(getActivity()).
addToRequestQueue(
new JsonObjectRequest(
Request.Method.GET,
Constantes.GET_Asistencia,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// Procesar la respuesta Json
procesarRespuesta(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "Error Volley: " + error.toString());
}
}
)
);
}
public void procesarRespuesta(JSONObject response) {
try {
// Obtener atributo "estado"
String estado = response.getString("estado");
switch (estado) {
case "1": // EXITO
// Obtener array "metas" Json
JSONArray mensaje = response.getJSONArray("metas");
Meta_Asistencia[] metas = gson.fromJson(mensaje.toString(), Meta_Asistencia[].class);
// APLICACIÓN DE ORDEN:
// Ordenar el array de metas por idMeta de forma descendente:
Arrays.sort(metas, new Comparator<Meta_Asistencia>() {
int result;
DateFormat f = new SimpleDateFormat("yyyy-mm-dd", Locale.ENGLISH);
@Override
public int compare(Meta_Asistencia objeto1, Meta_Asistencia objeto2) {
// Comparamos por fechaLim de forma descendente:
try {
result = f.parse(objeto2.dia).compareTo(f.parse(objeto1.dia));
Log.d("DIA", objeto1.dia);
Log.d("DIA1", objeto2.dia);
Log.d("ordenar", String.valueOf(result));
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
});
// Inicializar adaptador
adapter = new MetaAdapter_Asistencia(Arrays.asList(metas), getActivity());
// Setear adaptador a la lista
lista.setAdapter(adapter);
progressBar_first.setVisibility(View.INVISIBLE);
我的新过滤代码:
// Inicializar adaptador
Log.d("DIATX", String.valueOf(8));
for(int i=0;i<metas.size();i++){
if(metas.getObject(i).miId != null){
filteredArr.put(metas.getObject(i));
}
}
adapter = new MetaAdapter_Asistencia(Arrays.asList(metas),
getActivity(), myId);
// Setear adaptador a la lista
lista.setAdapter(adapter);
progressBar_first.setVisibility(View.INVISIBLE);
【问题讨论】:
-
您的问题有点不清楚,您要过滤哪个数组?如果您返回 null 而不是视图持有者,为什么它不会抛出异常。
-
我想过滤适配器,但我认为我需要在创建它之前过滤它,因为null的错误。但我不知道怎么做。
标签: android mysql arrays arraylist filter