2

조각 내에 ListView이 생성되어 있고 검색 필터가 있습니다. XML 레이아웃이 안드로이드 스튜디오에서 잘 보이지만 에뮬레이터 또는 휴대 전화에서 다르게 표시 될 때 문제가 발생합니다. (제대로 정렬되지 않음) 그리고 SearchView을 클릭하면 탭 탐색 아래로 이동합니다. 아무도 이것을 고칠 방법을 말할 수 있습니까?앱이 실행될 때 상대 레이아웃의 요소가 다르게 표시됩니다.

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.StrictMode; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Filter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.parse.ParseObject; 
import com.squareup.picasso.Picasso; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.List; 

public class IndividualsAdaptor extends ArrayAdapter { 

     protected Context mContext; 
     // Code for Custom Filter. 
     protected List mBackupList = new ArrayList(); 

     public IndividualsAdaptor(Context context, List status) { 
      super(context, R.layout.t3, status); 
      mContext = context; 
      // Code for Custom Filter. 
      mBackupList.addAll(status); 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      ViewHolder holder; 

      if (android.os.Build.VERSION.SDK_INT > 9) { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
       StrictMode.setThreadPolicy(policy); 
      } 

      if (convertView == null) { 
       convertView = LayoutInflater.from(mContext).inflate(R.layout.t3, null); 
       holder = new ViewHolder(); 
       holder.usernameHomepage = (TextView) convertView.findViewById(R.id.fname); 
       holder.statusHomepage = (TextView) convertView.findViewById(R.id.lname); 
       holder.pposition = (TextView) convertView.findViewById(R.id.idposition); 
       holder.orgName = (TextView) convertView.findViewById(R.id.organizationname); 
       holder.logo = (ImageView) convertView.findViewById(R.id.imageView); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      ParseObject statusObject = (ParseObject) getItem(position); 
      // title 
      String username = statusObject.getString("firstname"); 
      holder.usernameHomepage.setText(username); 
      // content 
      String status = statusObject.getString("lastname"); 
      holder.statusHomepage.setText(status); 
      // content 
      String positions = statusObject.getString("position"); 
      holder.pposition.setText(positions); 
      // content 
      String org = statusObject.getString("organizationName"); 
      holder.orgName.setText(org); 
      // logo 
      URL url = null; 
      Bitmap bmp = null; 
      try { 
       url = new URL("img hosting location" + statusObject.getString("image")); 
       bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
      } catch (MalformedURLException e) { 
      }catch (IOException e) { 
      } 
      holder.logo.setImageBitmap(bmp); 
      Picasso.with(mContext) 
        .load(String.valueOf(url)) 
        .into(((ImageView) convertView 
          .findViewById(R.id.imageView))); 

      return convertView; 
     } 

     public static class ViewHolder { 
      TextView usernameHomepage; 
      TextView statusHomepage; 
      TextView orgName; 
      TextView pposition; 
      ImageView logo; 
     } 

     // Code for Custom Filter. 
     @Override 
     public Filter getFilter() {return new Filter(){ 
      @Override 
      protected FilterResults performFiltering(CharSequence charSequence) { 
       String queryString = charSequence.toString().toLowerCase(); 
       List<ParseObject> filteredList = new ArrayList<>(); 
       ParseObject tmpItem; 
       String tmpUsername, tmpStatus, tmpPositions, tmpOrg; 
       for(int i=0; i<mBackupList.size(); i++){ 
        tmpItem = (ParseObject) mBackupList.get(i); 
        tmpUsername = tmpItem.getString("firstname").toLowerCase(); 
        tmpStatus = tmpItem.getString("lastname").toLowerCase(); 
        tmpPositions = tmpItem.getString("position").toLowerCase(); 
        tmpOrg = tmpItem.getString("organizationName").toLowerCase(); 
        // The matching condition 
        if(tmpUsername.contains(queryString)||tmpStatus.contains(queryString)|| 
          tmpPositions.contains(queryString)||tmpOrg.contains(queryString)){ 
         filteredList.add(tmpItem); 
        } 
       } 
       FilterResults filterResults = new FilterResults(); 
       filterResults.count = filteredList.size(); 
       filterResults.values = filteredList; 
       return filterResults; 
      } 
      @Override 
      protected void publishResults(CharSequence charSequence, Filter.FilterResults filterResults) { 
       clear(); 
       addAll((List<ParseObject>) filterResults.values); 
      } 
     };} 

     public void updateBackupList(List newList){ 
      mBackupList.clear(); 
      mBackupList.addAll(newList); 
     } 
    } 

ListView 레이아웃 :

,691

import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.SearchView; 
import android.widget.Toast; 
import com.parse.FindCallback; 
import com.parse.ParseException; 
import com.parse.ParseFile; 
import com.parse.ParseObject; 
import com.parse.ParseQuery; 
import java.net.URL; 
import java.util.ArrayList; 
import java.util.List; 

public class Individuals extends android.support.v4.app.ListFragment 
     implements FindCallback<ParseObject> { 

    private List<ParseObject> mOrganization = new ArrayList<ParseObject>(); 
    SearchView sv; 
    IndividualsAdaptor adaptor; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.individuals, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle b) { 
     super.onViewCreated(view, b); 
     sv = (SearchView) view.findViewById(R.id.ser1); 
     adaptor = new IndividualsAdaptor(getActivity(), mOrganization); 
     setListAdapter(adaptor); 
     ParseQuery.getQuery("_User").findInBackground(this); 

     sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String text) { 
       return false; 
      } 
      @Override 
      public boolean onQueryTextChange(String text) { 
       adaptor.getFilter().filter(text); 
       return true; 
      } 
     }); 
    } 

    @Override 
    public void done(List<ParseObject> scoreList, ParseException e) { 
     if (e == null) { 
      Log.d("score", "Retrieved " + scoreList.size() + " _User"); 
      mOrganization.clear(); 
      mOrganization.addAll(scoreList); 
      ((IndividualsAdaptor) getListAdapter()).updateBackupList(mOrganization); 
      ((IndividualsAdaptor) getListAdapter()).notifyDataSetChanged(); 
     } else { 
      Log.d("score", "Error: " + e.getMessage()); 
     } 
    } 
} 

이 어댑터이다

image is on top and the lsitview is under it and the search is under the tabs

this is how it looks in android studio

은 단편 363,210
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="0dp" 
    android:paddingRight="0dp"> 

    <TextView android:id="@id/android:empty" 
     android:layout_width="match_parent" 
     android:layout_height="335dp" 
     android:text="No data" 
     android:layout_below="@+id/button3" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="56dp" 
     android:layout_toLeftOf="@+id/android:list" 
     android:layout_toStartOf="@+id/android:list" /> 

    <SearchView 
     android:id="@+id/ser1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:queryHint="Search.." 
     android:background="@android:color/holo_red_dark" 
     android:layout_marginTop="60dp" 
     android:layout_alignTop="@+id/android:empty" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 
    </SearchView> 

    <ListView android:id="@id/android:list" 
       android:layout_width="263dp" 
       android:layout_height="241dp" 
       android:layout_marginTop="34dp" 
       android:layout_below="@+id/android:empty" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentEnd="true"/> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:srcCompat="@drawable/individuals_img" 
     android:id="@+id/imageView3" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@+id/android:empty" 
     android:layout_toEndOf="@+id/android:empty"/> 

</RelativeLayout> 

ListView의 항목 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<ImageView 
     android:id="@+id/imageView" 
     android:layout_gravity="center" 
     android:layout_height="110dp" 
     android:layout_width="110dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginLeft="14dp" 
     android:layout_marginStart="14dp" 
     android:layout_marginTop="19dp" 
     /> 
    <!-- img --> 


    <TextView 
     android:text="TextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/organizationname" 
     android:textSize="10sp" 
     android:layout_below="@+id/idposition" 
     android:layout_alignLeft="@+id/idposition" 
     android:layout_alignStart="@+id/idposition" 
     android:paddingTop="10px" /> 


    <TextView 
     android:text="yyyyyyyyyyyyyyyyy" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/idposition" 
     android:textSize="10sp" 
     android:layout_below="@+id/fname" 
     android:layout_alignLeft="@+id/fname" 
     android:layout_alignStart="@+id/fname" /> 

    <TextView 
     android:id="@+id/fname" 
     android:text="Name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="12dp" 
     android:layout_marginStart="12dp" 
     android:textColor="#000" 
     android:textSize="12sp" 
     android:textStyle="bold" 
     android:layout_alignTop="@+id/imageView" 
     android:layout_toRightOf="@+id/imageView" 
     android:layout_toEndOf="@+id/imageView" 
     android:layout_marginTop="13dp" 
     android:fontFamily="sans-serif" /> 

    <TextView 
     android:text="TextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/lname" 
     android:textColor="#000" 
     android:textSize="12sp" 
     android:textStyle="bold" 
     android:layout_above="@+id/idposition" 
     android:layout_toRightOf="@+id/organizationname" 
     android:layout_toEndOf="@+id/organizationname" /> 

</RelativeLayout> 

주요 활동 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="app.com.anew.fbcapplication.AppHome"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/appbar_padding_top" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <Button 
       android:layout_height="40dp" 
       android:background="@drawable/nav" 
       android:id="@+id/button2" 
       android:layout_weight="1" 

       android:layout_width="40dp" 
       android:layout_alignBottom="@+id/button" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       tools:paddingLeft="25dp" 
       tools:layout_marginLeft="20dp" /> 

      <Button 
       android:layout_width="40dp" 
       android:layout_height="40dp" 
       android:background="@drawable/i" 
       android:id="@+id/button" 
       android:layout_weight="1" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentEnd="true" /> 

      <ImageView 
       app:srcCompat="@drawable/logo" 
       android:id="@+id/imageView2" 
       android:layout_weight="1" 
       tools:layout_marginLeft="15dp" 
       android:layout_width="280dp" 
       android:layout_alignParentTop="true" 
       android:layout_toLeftOf="@+id/button" 
       android:layout_toStartOf="@+id/button" 
       android:layout_height="50dp" /> 

     </RelativeLayout> 


     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabTextAppearance="@style/TabTextAppearance" 
      /> 

    </android.support.design.widget.AppBarLayout> 

</RelativeLayout> 
+0

당신이보고있는 실제 이미지와 레이아웃 편집기의 이미지를 포함시킬 수 있다면 도움이 될 것입니다. –

+0

@Jabbar_Jigariyo 스크린 샷을 추가했지만 ListView는 이미지와 탭, 그리고 탭 아래뿐만 아니라 SearchView에서도 보이지만, 안드로이드 스튜디오에서는 완벽하게 보이고 있습니다. –

답변

1

귀하의 목록보기 (나는 그것이 individuals.xml이라고 생각), 예를 들면하려고 할 때 나는 오류 TextView android : id = "@ id/android : empty"속성에 android : layout_below = "@ + id/button3"속성이 있지만 레이아웃에서 button3을 찾을 수 없습니다. 이 당신을 위해 무엇을 찾고있는없는 경우

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:srcCompat="@drawable/individuals_img" 
    android:src="@drawable/individuals_img" 
    android:id="@+id/imageView3" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true"/> 

<SearchView 
    android:id="@+id/ser1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:queryHint="Search.." 
    android:background="@android:color/holo_red_dark" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_toLeftOf="@+id/imageView3" 
    android:layout_toStartOf="@+id/imageView3" > 
</SearchView> 

<TextView android:id="@id/android:empty" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="No data" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_below="@+id/ser1" /> 

<ListView android:id="@id/android:list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/ser1" /> 

</RelativeLayout> 

은 또한 당신의 레이아웃이 안드로이드 스튜디오 레이아웃 편집기에서 모양을 보여주십시오 :

이 원하는 레이아웃, individuals.xml 수 있습니다. 희망 도움 :

+0

이 코드를 시도하기 위해 scren shot을 추가했습니다. , searchview와 이미지 모두가 사라집니다. ? 그것은 상대적 레이아웃을 사용하는 bamz Iam입니까? –

+0

답변을 편집했습니다. 이것이 당신이 원하는 것에 가까운 지 확인하십시오. 게시 한 레이아웃의 문제 : 빈보기를 기준으로 한 다른보기 따라서 목록이 비어 있지 않으면 레이아웃은 사용자가 보는 것과 다릅니다. 빈 뷰 가시성을 GONE으로 설정하여 테스트 할 수 있습니다. 또한 레이아웃 스크린 샷에서 검색보기 ID는 searchUserTextField로 설정되어 게시 한 코드와 일치하지 않습니다. 덕분에 –

+0

. 나는 시도 할 것이다. 괜찮 으면 이메일 ID를 알려주세요. @I_A_Mok –