我为Listview创建了一个自定义适配器,这个ListView的每个元素都有不同的字段
/*In my CustomListViewAdapter*/
private class ViewHolder {
TextView txtNombre;
TextView txtTicket;
TextView txtAsiento;
TextView txtOrden;
TextView txtNumero;
TextView txtMensaje;
TextView txtAdicionales;
TextView txtOtros;
TextView txtCategoria;
Button btn;
}
我有一个异步任务,它运行此列表中的每个单元格,并根据此时没有相关性的结果修改数据。
protected void onPostExecute(Void result) {
super.onPostExecute(result);
listView = (ListView) findViewById(R.id.listView1);
SessionManager s = new SessionManager();
View v;
Button b;
TextView mensaje;
for (int i = 0; i < listView.getCount(); i++) {
v = listView.getChildAt(i);
mensaje = (TextView) v.findViewById(R.id.txtMensaje);
if(!mensaje.getText().equals("E-ticket ya validado")){
mensaje.setText("E-ticket validado");
mensaje.setVisibility(View.VISIBLE);
b = (Button) v.findViewById(R.id.button1);
b.setBackgroundResource(R.drawable.icon_big_check);
b.setText("");
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)LayoutParams.WRAP_CONTENT, (int)LayoutParams.WRAP_CONTENT);
params.width = 50;
params.height = 50;
params.rightMargin = 63;
params.topMargin = 10;
params.bottomMargin = 5;
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
b.setLayoutParams(params);
}
}
//MORE code.....
问题是我收到以下错误:
02-23 12:41:07.249: E/AndroidRuntime(32585): java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
02-23 12:41:07.249: E/AndroidRuntime(32585): at com.google.zxing.client.android.ValidacionMultiple$validarTodasInscripciones.onPostExecute(ValidacionMultiple.java:359)
第359行是message = (TextView) v.findViewById (R.id.txtMensaje);
我的布局列表视图
<ListView
android:id="@+id/listView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/EditText01"
android:cacheColorHint="#00000000"
android:textColor="#000000"
android:textSize="15sp" />
我的布局自定义列表视图
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txtNombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp"
android:paddingLeft="10dp"
android:text="TextView" />
<TextView
android:id="@+id/txtTicket"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtNombre"
android:paddingLeft="10dp"
android:text="TextView" />
<TextView
android:id="@+id/txtOrden"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtTicket"
android:paddingLeft="10dp"
android:text="" />
<TextView
android:id="@+id/txtAsiento"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtOrden"
android:paddingLeft="10dp"
android:visibility="gone"
android:text="" />
<TextView
android:id="@+id/txtNumero"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtAsiento"
android:paddingLeft="10dp"
android:visibility="gone"
android:text="" />
<TextView
android:id="@+id/txtAdicionales"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtNumero"
android:paddingLeft="10dp"
android:visibility="gone"
android:text="" />
<TextView
android:id="@+id/txtOtros"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtAdicionales"
android:paddingLeft="10dp"
android:visibility="gone"
android:text="" />
<TextView
android:id="@+id/txtCategoria"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtOtros"
android:paddingLeft="10dp"
android:visibility="gone"
android:text="" />
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/txtOrden"
android:layout_alignParentRight="true"
android:layout_marginRight="23dp"
android:background="@drawable/btn_green_small"
android:maxHeight="48dp"
android:maxWidth="80dp"
android:shadowColor="#A8A8A8"
android:text="Validar"
android:textColor="#FFFFFF" />
<TextView
android:id="@+id/txtMensaje"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/button1"
android:text="SDSDSDS"
android:layout_marginRight="18dp"
android:visibility="gone"
android:textSize="10dp" />
</RelativeLayout>
列表视图中的任何元素都会发生这种情况。
答案 0 :(得分:1)
您需要移动列表项视图的代码并将layoutparams设置为适配器中的getView
:
public View getView(int position, View convertView, ViewGroup parent)
看看这个tutorial,现在我建议你看看recyclerview