2014-01-11 3 views
0

내 응용 프로그램은 ListView (이미지 포함 안 함)의 데이터 만로드합니다. 내 응용 프로그램을 시작할 수 없습니다. -> 응용 프로그램 -> 내 응용 프로그램을 선택하고 클릭 강제 종료왜 응용 프로그램을 시작할 수 없습니까?

01-11 14:58:52.598: E/JavaBinder(265): !!! FAILED BINDER TRANSACTION !!! 

내가 설정으로 이동 : 나는 로그 캣을 볼 , 그것은 메시지를 보여줍니다. 괜찮아 질거야. 왜? 어떻게이 문제를 해결하나요? 감사.

내 코드 : 그것에서 OutOfMemory 오류 일 수도있는 VM 문제가 안가 메모리 문제가있는 경우 Raghunandan 말한대로 코드가 메모리 문제가없는 그런데

@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

코드 및 기타 로그를 게시하여 어떤 일이 벌어 지는지 확인하십시오. – anddev84

+0

내 코드가 업로드되었습니다. 괜찮아. 그러나 일이 시작될 수는 없습니다. –

+0

profileAdapter 클래스 게시 ... ArrayAdapter를 확장하는 profileAdapter입니까? –

답변

0

.

여기서 ListView의 사용자 지정 데이터를 채울 책임이있는 어댑터 클래스를 사용하고 있다는 것을 알아야합니다.

모든 어댑터 클래스는 현재 컨텍스트를 사용하여 생성자를 통해 적절한 액티비티로부터 데이터 (예 : ArrayList)를 가져와야합니다. 처럼 :

MyAdapter adapter = new MyAdapter(context, arraylist_data); 

그리고 목록보기 나있는 gridview의 어댑터로 사용 넣어는, setAdapter()를 사용하여이 어댑터 객체입니다.

그리고 MyAdapter 클래스에서 적절한 매개 변수로 구성을 정의해야합니다. public class MyAdapter extends 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가 이미 설명했습니다. 코드를 작성하는 방식을 바꾸면됩니다.

관련 문제