2015-05-21 2 views
0

Я пытаюсь получить новости с одного сайта. В некоторых статьях есть изображения. Вот моя проблема: в какой-то статье нет изображений, поэтому я хочу удалить, что Imageview для этой строки и заголовка textview должен получить это пространство. Я попытался реализовать его в BaseAdapter, но setvisibility(View.Gone) не работает, я думаю.TextView не получает пространство ImageView

Вот мой файл макета:

<!-- Thumbnail Image --> 
<com.android.volley.toolbox.NetworkImageView 
    android:id="@+id/thumbnail" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="8dp" /> 

<!-- News Title --> 
<TextView 
    android:id="@+id/title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="@dimen/title" 
    android:ellipsize="end" 
    android:textStyle="bold" 
    android:layout_alignTop="@+id/thumbnail" 
    android:layout_toRightOf="@+id/thumbnail"/> 

Вот моя реализация в базовом адаптере:

NetworkImageView thumbNail = (NetworkImageView) convertView 
      .findViewById(R.id.thumbnail); 
    TextView title = (TextView) convertView.findViewById(R.id.title); 

    // getting movie data for the row 
    Movie m = movieItems.get(position); 

    if(m.getThumbnailUrl() == null) 
    { 

    thumbNail.setVisibility(View.GONE); //Not working 

    } 
    else { 
     thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader); 
    } 

И выходной ток: Я хочу, чтобы пустое пространство ImageView для использования TextView ,

Example

Когда я пытаюсь с ViewHolder для плавного перехода я не могу реализовать эту логику:

if (position==-1) 
    { 
     viewHolder.thumbnail.setVisibility(View.GONE); 
    } 
    else 
    { 
     viewHolder.thumbnail.setImageUrl(news.getThumbnailUrl(), imageLoader); 
    } 

ответ

1

Вы можете проверить, является ли URL для изображения является действительным или нет, то вы можете использовать видимость пошла концепцию . Используйте что-то вроде кода ниже:

if(!URLUtil.isValidUrl(m.getThumbnailUrl())){ 
    thumbNail.setVisibility(View.GONE); 
}else { 
     thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader); 
     thumbNail.setVisibility(View.VISIBLE); 
    } 

Надейтесь, что это вам поможет.

+0

Я попробую ваше предложение и дам вам знать – Roon13

+0

Его не происходит так, как я хотел. Даже я потерял изображения для статей с изображением. – Roon13

+0

Вы используете! символ в if (....) условие? –

1

попробовать это:

if(m.getThumbnailUrl() == null) 
    { 
    thumbNail.setVisibility(View.GONE); 
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
lp.addrule(LinearLayout.RIGHT_OF,0); 
     lp.setMargins(-150,0,0,0); //set your margins for your textview as your want 
     title.setLayoutParams(lp); 
     Your_Linear_Layout_Name.addView(title, lp); 
     //or RelativeLayoutName.addView(title, lp); 
     } 

     ..... 
+0

Не работает для меня – Roon13

+0

Вы уверены, что m.getThumbnailUrl() сохраняет null? Если да, попробуйте удалить 'android: layout_toRightOf =" @ + id/thumbnail ", когда он равен null, и проверьте –

+0

Да, мне удалось, что в запросе json-Jsoup – Roon13

1

m.getThumbnailUrl() возвращает строку, верно?

Вы попробовали?

if(m.getThumbnailUrl() == null || TextUtils.isEmpty(m.getThumbnailUrl())) 

Попытка отладить и проверить, если ударить эту строку:

thumbNail.setVisibility(View.GONE); 
+0

Я дам ему попробовать – Roon13

+0

Он пропускает некоторые изображения. Другие вещи выглядят хорошо – Roon13

1

Когда у вас нет изображения для статьи установлено LayoutParameters для конкретного TextView программно.

if(m.getThumbnailUrl() == null) 
{ 

thumbNail.setVisibility(View.GONE); 
RelativeLayout.LayoutParams layoutParams= (RelativeLayout.LayoutParams) title.getLayoutParams(); 
layoutParams.addRule(RelativeLayout.RIGHT_OF,0); 
layoutParams.addRule(RelativeLayout.ALIGN_TOP,0); 
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,RelativeLayout.TRUE); 
title.setLayoutParams(layoutParams); 
} 
+0

addRule для? – Roon13

+0

У меня есть логика addRule. – Roon13

+0

Его не получают пространство. – Roon13

1

Это из-за того, как работает ListView. Вы можете попробовать что-то вроде этого:

if(m.getThumbnailUrl() == null) 
    { 

    thumbNail.setVisibility(View.GONE); 
    LayoutParams layoutParams = title.getLayoutParams(); 
    layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; 
    layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; 
    title.setLayoutParams(layoutParams); 
    } 

    else { 

     thumbanil.setVisibility(View.VISIBLE); 
     thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader); 
     LayoutParams layoutParams = title.getLayoutParams(); 
     layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; 
     title.setLayoutParams(layoutParams); 

    } 
+0

Его не происходит. – Roon13

+0

Возможно, m.getThumnailUrl() не возвращает значение null. –

+0

Тогда я должен получить изображения для этого, не так ли? – Roon13

Смежные вопросы