2013-10-29 2 views
1

안드로이드 응용 프로그램을 개발 중입니다. 내 페이지에 검색 결과를 표시해야합니다. 내 페이지의 선형 레이아웃은 머리글로 사용되는 이미지로 구성됩니다 .Layout 어댑터와 뷰 홀더를 사용하여 세부 정보를 표시했습니다. 문제는 내가 결과를 얻을 때 모든 검색 결과에 헤더 이미지가 표시된다는 것입니다. 한 번만 이미지 헤더를 보여줄 필요가 있습니다. 어떻게해야합니까? 이것은 레이아웃과 코드입니다.안드로이드에서 레이아웃 어댑터를 사용할 때 반복적으로 머리글 이미지가 선형 레이아웃으로 표시되었습니다.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main_layout" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
<LinearLayout 
      android:id="@+id/main_layout1" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 
<ImageView 
      android:id="@+id/imageheader" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="5dip" 

      android:src="@drawable/logo" 
      android:adjustViewBounds="true"/> 
    <!-- --> 
</LinearLayout> 
<ScrollView 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:fillViewport="true" 
android:id="@+id/ScrollViewSearch" > 

<LinearLayout 
     android:id="@+id/main_layout2" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dip"> 

<RelativeLayout 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:padding="5dip" > 

<LinearLayout android:id="@+id/thumbnail" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="3dip" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="5dip"> 

    <ProgressBar 
    android:id="@+id/progressBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:paddingLeft="15dp" /> 

</LinearLayout> 
<TextView 
    android:id="@+id/textViewUser1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    /> 
<TextView 
    android:id="@+id/textViewUser" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/textViewUser1" 
    android:text="Maradona"  
    android:paddingLeft="10dp"/> 

<!-- Artist Name --> 
<TextView 
    android:id="@+id/textViewUserid" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Maradoncssdsdsda"  
    android:textColor="#343434" 
    android:textSize="12dip" 
    android:layout_toRightOf="@+id/textViewUser1" 
    android:layout_below="@+id/textViewUser" 
    android:paddingLeft="10dp"/> 


    </RelativeLayout> 
<AbsoluteLayout 
    android:id="@+id/tableRow3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dip" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="25dp" 
     android:layout_height="19dp" 
     android:layout_marginBottom="5dip"/> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="110dp" 
     android:layout_height="wrap_content" 
     android:layout_x="25dp" 
     android:layout_y="3dp" 
     android:paddingRight="10dp" 
     android:text=" Send Message" 
     android:clickable="true" 
     android:textColor="#028dca" 
     android:textSize="12dip" /> 
    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="25dp" 
     android:layout_height="19dp" 
     android:layout_marginBottom="5dip" 

     android:layout_x="120dp" 
     android:layout_y="3dp" /> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="90dp" 
     android:layout_height="wrap_content" 
     android:layout_x="150dp" 
     android:layout_y="3dp" 
     android:paddingRight="10dp" 
     android:text="Full Profile " 
     android:textColor="#028dca" 
     android:textSize="12dip"/> 

    </AbsoluteLayout> 

    </LinearLayout> 
    </ScrollView> 
    </LinearLayout> 

클래스 파일

public class LazyAdapter extends BaseAdapter { 
private ListActivity activity; 
private LayoutInflater layoutInflater; 
private ArrayList<String> names; 
private FbUser[] folks; 
private int folksNumber = 0; 


public LazyAdapter(ListActivity activity, ArrayList<String> names) { 
    super(); 

    this.activity = activity; 
    this.names = names; 
    this.folks = new FbUser[this.names.size()]; 
    layoutInflater = (LayoutInflater) activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    new FetchDataTask(this, 0).execute(new Void[]{}); 
} 



public View getView(int position, View convertView, ViewGroup parent) { 
    FbUser cachedUser = folks[position]; // trying to get a user from cache 

    View item = convertView; 
    ViewHolder viewHolder; 

    /** 
    * If item has not been created yet, we inflate it and pass its personal 
    * ViewHolder as a tag parameter. Otherwise we just get an existing 
    * ViewHolder. 
    */ 
    if (item == null) { 
     //LinearLayout aa=(LinearLayout)item.findViewById(R.id.main_layout); 
     item = layoutInflater.inflate(R.layout.quicksearchresult, null); 
     viewHolder = new ViewHolder(); 

     viewHolder.textView = (TextView) item.findViewById(R.id.textViewUser); 
     viewHolder.textView1 = (TextView) item.findViewById(R.id.textViewUserid); 
     viewHolder.textView2 = (TextView) item.findViewById(R.id.textViewUser1); 
     viewHolder.spinner = (ProgressBar) item.findViewById(R.id.progressBar); 
     item.setTag(viewHolder); 





    } else { 
     viewHolder = (ViewHolder) item.getTag(); 
    } 

    /** 
    * If the current user has been fetched we put cached data to the view. 
    * Otherwise we clear the view. 
    */ 
    if (cachedUser != null) { 

     viewHolder.textView.setText(cachedUser.getName()); 
     viewHolder.textView1.setText(cachedUser.getUserid()); 
     viewHolder.spinner.setVisibility(View.GONE); 
     viewHolder.textView2.setCompoundDrawablesWithIntrinsicBounds(
       new BitmapDrawable(activity.getResources(), cachedUser 
         .getBitmap()), null, null, null); 


    } else { 
     viewHolder.textView.setText(""); 
     viewHolder.spinner.setVisibility(View.VISIBLE); 
     viewHolder.textView.setCompoundDrawablesWithIntrinsicBounds(
       null, null, null, null); 
     viewHolder.textView1.setCompoundDrawablesWithIntrinsicBounds(
       null, null, null, null); 
    } 

    return item; 
} 


@Override 
public int getCount() { 
    return names.size(); 
} 

@Override 
public Object getItem(int position) { 
    return names.get(position); 
} 


@Override 
public long getItemId(int position) { 
    return 0; 
} 


public void cacheUser(FbUser user) { 
    folks[folksNumber] = user; 
    folksNumber++; 
    notifyDataSetChanged(); //reload ListView 
} 


private static class ViewHolder { 
    public TextView textView,textView1,textView2; 
    public ImageView image1; 
    public LinearLayout lay; 
    public ProgressBar spinner; 
} 

}

+0

명확하게 이해할 수 없습니다 ... (위치 == 0) 이미지를 설정하려고 시도하십시오. – Manivannan

답변

3

당신의 목록에있는 모든 항목에 대해 귀하가 전체 XML 파일을 올리는 것 같다입니다. 이 xml 파일을 헤더와 ListView (activity_layout.xml)를 포함하는 두 개의 다른 파일로 분할 한 다음 각 개별 행 (row_layout.xml)의 레이아웃이 될 또 다른 파일로 분할하려고합니다. 그런 다음 어댑터 클래스에서 각 항목에 대해 row_layout.xml을 사용하여 개별 행을 확장합니다.

+0

레이아웃을 분할하고이를 수행하는 방법을 설명 할 수 있습니까? 안드로이드를 처음 접하는 이유는 무엇입니까? –

+0

위대한 튜토리얼 : http://www.vogella.com/articles/AndroidListView/article.html –

관련 문제