2014-03-31 2 views
0

두 개의 조각이 세로 방향과 가로 방향으로 각각 하나씩 있습니다. 응용 프로그램이 세로 인 경우 ListView은 예상대로 서버의 모든 항목을 채 웁니다. 그러나 전화 가로를 설정하면 ListView이 채워지지만 서버의 모든 항목이 채워지지는 않습니다 (마지막 5 ~ 6 개의 항목이 누락 된 것처럼 보임). 코드를 디버깅했으며 모든 것이 실제로 내 서버에서 반환되는 메시지에 있음을 알 수 있습니다.조각의 목록보기가 모든 항목을 표시하지 않습니다.

public final Handler myCallBack = new Handler() { 
@Override 
public void handleMessage(Message msg) { 
try { 
    lv = (ListView) view.findViewById(R.id.listView1); 
    if (msg.obj == "No Response") { 
    TextView tv2 = (TextView) view.findViewById(R.id.textView2); 
    tv2.setText("No Response. Please check your internet connection"); 
    tv2.setVisibility(View.VISIBLE); 
    lv.setVisibility(View.INVISIBLE); 
} else { 
    dataList = (ArrayList<Beer>) msg.obj; 
    lv.setVisibility(View.VISIBLE); 
    ArrayAdapter<Beer> arrayAdapter = new ArrayAdapter<Beer>(
    getActivity(), android.R.layout.simple_list_item_1, (List<Beer>) msg.obj); 
    lv.setAdapter(arrayAdapter); 
} 
}catch (Exception ex) { 
} 
} 
}; 

어떤 도움이 많이 주시면 감사하겠습니다 다음과 같이

내 코드입니다. dataList를 추출

단지 아직 변경할 수 ArrayList<Beer>에 대한 참조 :

답변

2

문제는 당신이 당신의 핸들러에 데이터를 전달하는 방법이 될 가능성이 높습니다.

메시지가 배열 데이터의 copy을 전달하는 것입니다.이 경우 BeerParcelable이 필요합니다.

그런 다음 putParcelableArrayList와 함께 번들 당신이 당신의 핸들러의 UI 스레드에에 보내기 전에 메시지에 번들을 설정하여 ArrayList<Beer>을 넣어 :

Bundle bundle = new Bundle(); 
bundle.putParcelableArrayList("myBeers", dataList/*your ArrayList*/); 
msg.setData(bundle); 

이상에서 핸들러에 압축을 풉니

ArrayList<Beer> dataList = bundle.getParcelableArrayList("myBeers"); 

문제가 해결 될 것이라고 확신합니다. 자세한 내용이 필요한 경우 알려주십시오.

+0

그냥 내 처리기의 비트에 붙어 점점 도움을 주셔서 감사합니다, ive 메시지로 처리기에 메시지를 반환하고 다음 번에 메시지를 얻을 수있는 방법에 대한 단서가없는 것처럼 붙어 메신저 getParcelableArrayList 메소드를 사용하십시오. 환호 – Stephen

+0

확인. 당신이해야 할 일을 요약 해 드리겠습니다. 그것은 복잡하지 않습니다 : 1. '맥주는 소포를 구현합니다.' 그것은 간단합니다. 예를 들어'parcelable'의 예제 나 SO 2에 대한 많은 예제를 찾아보십시오.'putParcelableArrayList'를 사용하여 배열을'new Bundle()'에 넣은 다음이 번들을 원하는 메시지로 설정해야합니다 보내다. 그럴 수있어? – kiruwka

+0

도와 주셔서 감사합니다. – Stephen

관련 문제