为什么我的应用程序有些无法启动?

时间:2014-01-11 08:00:06

标签: android

我的应用程序仅加载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;
        }
    }

1 个答案:

答案 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已经解释过了。所以只需改变你编写代码的方式就可以了。