我的应用程序仅加载ListView(不包含图像)的数据。 有些事我的申请无法启动。 我看logcat,它显示消息:
01-11 14:58:52.598: E/JavaBinder(265): !!! FAILED BINDER TRANSACTION !!!
我转到设置 - >应用 - >选择我的应用,然后单击强制停止。它会运行正常。 为什么?怎么解决这个问题?感谢。
我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler2 = new Handler();
dtTitle = new profileAdapter(this, R.layout.layoutrowtitle);
ListView lvTruyen = (ListView) findViewById(R.id.lvTruyen);
lvTruyen.setAdapter(dtTitle);
lvTruyen.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
DTO_Truyen dt = dtTitle.getItem(arg2);
Intent myinten = new Intent(MainActivity.this,
TruyenDetail.class);
Bundle b = new Bundle();
b.putString("Id", dt.ID);
myinten.putExtras(b);
startActivityForResult(myinten, 0);
}
});
showProccess();
startThread();
}
public class profileAdapter extends ArrayAdapter<DTO_Truyen> {
public profileAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
// TODO Auto-generated constructor stub
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
// return super.getView(position, convertView, parent);
View v = convertView;
ViewWraperDV mwp;
if (v == null) {
LayoutInflater l = getLayoutInflater();
v = l.inflate(R.layout.layoutrowtitle, null);
mwp = new ViewWraperDV(v);
v.setTag(mwp);
} else {
mwp = (ViewWraperDV) convertView.getTag();
}
TextView txtID = mwp.getLable();
TextView txtTitle = mwp.getTitle();
DTO_Truyen dt = this.getItem(position);
txtID.setText(dt.ID + ": ");
txtTitle.setText(dt.Title);
return v;
}
}
答案 0 :(得分:0)
顺便说一句,你的代码没有内存问题,因为Raghunandan说如果内存问题它应该是内存错误而且没有任何VM问题。
您必须了解这里使用的是适配器类,它负责填充ListView的自定义数据。
每个适配器类都应该通过其当前上下文的构造函数从其appropreate活动获取数据(例如ArrayList)。 像:
MyAdapter adapter = new MyAdapter(context, arraylist_data);
此适配器对象用作listview或gridview的适配器,并使用setAdapter()放置。
在你的MyAdapter类中,你应该使用适当的参数定义你的结构。喜欢: 公共类MyAdapter扩展BaseAdapter { private Context mContext; private ArrayList mData;
public MyAdapter (Context mContext, ArrayList<DTO_Truyen> mData){
this.mContext = mContext;
this.mData = mData;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//do any thing here...
}
}
你的getView()方法通过当前位置获取所有数据并将其放入自定义布局中,以及任何反应。
基本上这是将自定义布局和数据放在ListView中的方法。关于例外,Raghunandan和Gopal Rao已经解释过了。所以只需改变你编写代码的方式就可以了。