我正在制作包含文字和图片的ListView。一切都还可以,但当我点击其中一个列表项时,应用程序终止并显示以下内容:
E / JavaBinder:!!!失败的粘合剂交易! E / AndroidRuntime: 错误报告崩溃 android.os.TransactionTooLargeException 在android.os.BinderProxy.transactNative(原生方法) 在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) 在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 :(得分: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;
}
希望它能奏效。