빌드 대상 클라이언트에서 '뉴스'섹션을 포함하여 많은 콘텐츠 주위에서 스크롤 뷰를 감싸는 기능이 필요합니다. 이 때문에 ListView를 사용할 수 없습니다. 모든 ListItem보기를 수동으로 세로 LinearLayout으로 확대하려고합니다. ListView의 최적화 기능을 잃어 버릴 것이라는 것을 깨달았지만, 고객이 원하는 것이므로 그렇게해야합니다. 내 솔루션이 작동해야한다고 생각하지만 화면에 아무런 견해가 표시되지 않습니다. 내있는 ScrollView 내부에있는 LinearLayout, 그리고 그 안에 두 번째의 LinearLayout입니다 :LinearLayout에 동적으로 추가 된 뷰가 표시되지 않습니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:orientation="horizontal"
android:onClick="newsListItemClick"
android:background="@color/test_green">
<com.android.volley.toolbox.NetworkImageView
style="@style/thumbnail_image"
android:id="@+id/news_list_item_image"
android:layout_width="@dimen/thumbnail_width"
android:layout_height="@dimen/thumbnail_height" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
style="@style/headline_text"
android:id="@+id/news_list_item_headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
style="@style/promo_text"
android:id="@+id/news_list_item_promo_brief"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
내가 '마지막 코드 : 여기
<!-- News Fragment -->
<LinearLayout
android:id="@+id/news_frag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/test_yellow"/>
이 NewsListItem의 레이아웃 파일은 프로그래밍 방식으로. newsRequest이() 나는 onCreateView에서 만드는 마지막 호출입니다 : 그것은 addView를 호출하고 뷰 그룹의 컨테이너에 내 부풀려를 부착만큼이나 쉽게, 내가 읽은
private void newsRequest() {
Log.d("snw", "newsRequest()");
JsonArrayRequest jsonRequest = new JsonArrayRequest(NEWS_FEED_URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for (int i = 0; i < response.length(); i++) {
try {
NewsListItem item = new NewsListItem((JSONObject) response.get(i));
View view = addNewsToView(item);
containerView.addView(view);
containerView.invalidate();
} catch (JSONException e) {
e.printStackTrace();
}
}
containerView.bringToFront(); //something I tried, didn't help
containerView.postInvalidate(); //Same as above
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
volleyQueue.add(jsonRequest);
}
private View addNewsToView(NewsListItem item) {
Log.d("snw", "addNewsToView()");
ViewHolder holder;
View view = new View(getActivity());
if (view.getTag() == null) {
Log.d("snw", "Holder was null, inflating view");
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.news_list_item, null);
// set up ViewHolder
holder = new ViewHolder();
holder.thumbnail = (NetworkImageView) view.findViewById(R.id.news_list_item_image);
holder.headline = (TextView) view.findViewById(R.id.news_list_item_headline);
holder.promoBrief = (TextView) view.findViewById(R.id.news_list_item_promo_brief);
//set custom fonts
Typeface futuraBold =
Typeface.createFromAsset(view.getContext().getAssets(), "fonts/futura_today_bold.ttf");
Typeface futuraLight =
Typeface.createFromAsset(view.getContext().getAssets(), "fonts/futura_today_light.ttf");
holder.headline.setTypeface(futuraBold);
holder.promoBrief.setTypeface(futuraLight);
// store holder with the view
view.setTag(holder);
}
else {
holder = (ViewHolder) view.getTag();
}
holder.headline.setText(item.getHeadline());
holder.promoBrief.setText(item.getPromoBrief());
holder.thumbnail.setImageUrl(UrlBuilder.buildUrl(item.getImgUrl()),
VolleySingleton.getInstance(getActivity()).getImageLoader());
return view;
}
private class ViewHolder {
NetworkImageView thumbnail;
TextView headline;
TextView promoBrief;
}
모든이가 잘 작동한다 제안하는있는 LinearLayout . 첨부하기 전에 LayoutParameters를 뷰에 수동으로 설정하라는 제안을 몇 가지 읽은 적이 있지만이 경우까지는 아무런 효과가 없습니다. 어떤 통찰력?
이나요 : :) 내가 예를 발견
, ListView에 내 그들처럼 행동 아래 위 요소를 발견? – sahu