2016-12-23 32 views
-3

我正在制作带有文本和图像的ListView。一切都还好,但是当我点击其中一个列表项时,应用程序终止并显示如下:Mylistview导致失败的BINDER TRANSACTION

E/JavaBinder:!!!失败的粘合剂交易!!! E/AndroidRuntime:在android.os.BinderProxy.transactNative(本机方法) 错误报告崩溃 android.os.TransactionTooLargeException 在android.os.BinderProxy.transact(Binder.java:496) 在android.app.ActivityManagerProxy .handleApplicationCrash(ActivityManagerNative.java:4716) at com.android.internal.os.RuntimeInit $ UncaughtHandler.uncaughtException(RuntimeInit.java:95) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) at java .lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

代码如下:

public class RowItem { 

    private String title ; 
    private String descreption; 
    private int pic_id; 


    public RowItem(String title, String descreption, int pic_id) { 
      this.title = title; 
      this.descreption = descreption; 
      this.pic_id = pic_id; 
     } 

    public String getTitle() { 
      return title; 
    } 

    public void setTitle(String title) { 
      this.title = title; 
    } 

    public String getDescreption() { 
      return descreption; 
    } 

    public void setDescreption(String descreption) { 
      this.descreption = descreption; 
    } 

    public int getPic_id() { 
      return pic_id; 
    } 

    public void setPic_id(int pic_id) { 
      this.pic_id = pic_id; 
     } 
    } 

public class CustomAdapter extends BaseAdapter{ 
    Context context; 
    List<RowItem> rowItems; 

    public CustomAdapter(Context context, List<RowItem> rowItems) { 

     this.context = context; 
     this.rowItems = rowItems; 
    } 

    @Override 
    public int getCount() { 
     return rowItems.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return rowItems.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return rowItems.indexOf(getItemId(position)); 
} 

private class ViewHolder{ 
    ImageView imageView ; 
    TextView Title; 
    TextView descrip; 
} 

@Override 
public View getView( int position, View convertView, ViewGroup parent) { 
    ViewHolder holder ; 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

     if (convertView==null){ 
      convertView = inflater.inflate(R.layout.list_item,null); 
      holder=new ViewHolder(); 
      holder.Title= (TextView)convertView.findViewById(R.id.title); 
      holder.imageView=(ImageView)convertView.findViewById(R.id.pic1); 
      holder.descrip=(TextView)convertView.findViewById(R.id.descrption); 

      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag();} 
      RowItem row_po = rowItems.get(position); 
      holder.imageView.setImageResource(row_po.getPic_id()); 
      holder.Title.setText(row_po.getTitle()); 
      holder.descrip.setText(row_po.getDescreption()); 
      return convertView; 
     } 
} 

public class ExploreActivity extends Activity { 
    String[] Title; 
    TypedArray pics; 
    String[] description; 
    List<RowItem> rowItems; 
    ListView mylistview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_explore); 
     poplatelistview(); 

     mylistview = (ListView) findViewById(R.id.list); 
     CustomAdapter adapter = new CustomAdapter(this, rowItems); 
     mylistview.setAdapter(adapter); 
     rgistercalback(); 
    } 

    private void poplatelistview() { 
     rowItems = new ArrayList<RowItem>(); 
     Title = getResources().getStringArray(R.array.Title); 
     pics = getResources().obtainTypedArray(R.array.pics); 
     description = getResources().getStringArray(R.array.Descrpsions); 
     for (int i = 0; i < Title.length; i++) { 
      RowItem item = new RowItem(Title[i], description[i], pics.getResourceId(i, -1)); 
      rowItems.add(item); 
     } 
    } 

    private void rgistercalback() { 
     ListView list = (ListView) findViewById(R.id.list); 
     list.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String title = rowItems.get(position).getTitle(); 
       Toast.makeText(getApplicationContext(),""+title,Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 
} 
+0

请显示您的整个堆栈跟踪。你得到这个错误的哪一行? – barq

回答

0

请试试这个在您的自定义适配器类

@Override 
public int getCount() { 
    return rowItems.size(); 
} 

@Override 
public RowItem getItem(int position) { 
    return rowItems.get(position); 
} 

@Override 
public long getItemId(int i) { 
    return 0; 
} 

希望它会工作。

+0

我试过这个它没有工作:( – Ahlam

+0

为我工作不知道为什么它不适合你, –

+0

非常感谢你,我希望有人帮助我:“( – Ahlam