0

listviews를 작동시키기 위해 다양한 소스의 모든 단계를 수행했지만 내 경우 은 아무 것도 표시하지 않습니다. 이 목록보기 코드 (아래에 표시)는 탭 조각 관리자와 함께 활성화됩니다. 여기에 이미 많은 내용이 있으므로 코드를 사용하지 않으려면 여기에 넣지 않겠습니다. ListFragment 자체에 문제가있을 가능성이 있지만 어댑터가 될 수 있습니다.Android ListView는 아무 것도 표시하지 않지만 충돌하지 않습니다.

메인 xml 레이아웃에 넣은 searchview에는 아무것도 표시되지 않습니다. 나는 충돌없이 탭간에 자유롭게 전환 할 수 있지만, 내 목록보기에는 아무 것도 표시되지 않습니다. 친구 목록 (이 코드 스 니펫에 포함되지 않음) 인 일반 목록 홀더 인터페이스를 사용하는 다른 목록이 있는데 그 중 하나가 작동하지 않아 문제가 내 ListFragment에 있음을 알 수 있지만 그 점을 정확히 지적 할 수는 없습니다. . 어떤 도움을 주셔서 감사 드리며 일부는 이에 대해 배울 수 있기를 바랍니다. 감사합니다.

이 내 목록 조각

마지막이 내 XML 레이아웃입니다
package codeblox.com.listfragmentexample 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.util.ArrayList; 

import codeblox.com.listfragmentexample.R; 


public class Settings extends ListFragment implements View.OnLongClickListener 
{ 

private ListView settingsList; 
private ArrayList<SettingsCategories> mItems; 

private ArrayAdapter<SettingsCategories> settingsAdapter; 
private int numCategories; 
String[] CategoryArray = new String[] {"Privacy and Security","Account","Networks","Camera Options","Storage","Accesibility","Features"}; 
int[] resIds = new int[] {R.drawable.security_settings_icon,R.drawable.account_settings_icon, 
     R.drawable.network_settings_icon,R.drawable.camera_settings_icon,R.drawable.storage_settings_icon, 
     R.drawable.accessibility_settings_icon,R.drawable.feature_settings_icon,}; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
    View settingsView = inflater.inflate(R.layout.settings, container, false); 
    settingsList = (ListView)settingsView.findViewById(android.R.id.list); 
    // initialize the items list 
    return settingsView; 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) 
{ 
    super.onViewCreated(view, savedInstanceState); 
    // remove the dividers from the ListView of the ListFragment 
    settingsList = getListView(); 
    settingsList.setDivider(null); 
    mItems = new ArrayList<SettingsCategories>(); 
    Resources resources = getResources(); 

    for(int c = 0; c < numCategories; c++) 
    { 
     mItems.add(new SettingsCategories(CategoryArray[c],resIds[c])); 
    } 

    // initialize and set the list adapter 
    // settingsAdapter = new SettingsAdapter(this.getActivity(), mItems); 

    setListAdapter(new SettingsAdapter(getActivity(), mItems)); 
    settingsList.setAdapter(settingsAdapter); 

} 

public Settings() 
{ 

    this.numCategories = CategoryArray.length; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
} 

@Override 
public boolean onLongClick(View v) 
{ 
    return false; 
} 
@Override 
public void onListItemClick(ListView l, View v, int position, long id) 
{ 
    Object i = l.getItemAtPosition(position); 
} 

public class SettingsCategories 
{ 
    private String settingText; 
    private int imgResId; 

    SettingsCategories(String settingText,int imgResId) 
    { 
    this.settingText = settingText; 
    this.imgResId = imgResId; 
    } 

    public String getSettingText() 
    { 
     return this.settingText; 
    } 
    public int getImgResId() 
    { 
     return this.imgResId; 
    } 
} 
} 

이며

package codeblox.com.listfragmentexample; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.ToggleButton; 

import java.util.ArrayList; 
import codblox.com.listfragmentexample.R; 

public class SettingsAdapter extends ArrayAdapter<Settings.SettingsCategories> 
{ 
private final Activity context; 
String[] text; 
ArrayList<Settings.SettingsCategories> itemsCopy; 

class ViewHolder 
{ 
    public TextView txt; 
    public CheckBox state; 
    public ImageView settingImg; 
    public EditText input; 
    public ToggleButton toggle; 
    public Button settingInfo; // click it to show what the setting does 
} 

public SettingsAdapter(Context context, ArrayList<Settings.SettingsCategories> items) 
{ 
    super(context, R.layout.settings_category_row, items); 
    this.context = (Activity) context; 
    this.itemsCopy = items; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ViewHolder holder = new ViewHolder(); 
    int viewType = this.getItemViewType(position); 

    if(convertView == null) 
    { 
    // inflate the GridView item layout 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.settings_category_row, parent, false); 
    // initialize the view holder 
     holder = new ViewHolder(); 
     holder.settingImg = (ImageView) convertView.findViewById(R.id.settingCategoryImg); 
     holder.txt = (TextView) convertView.findViewById(R.id.settingCategoryName); 
     convertView.setTag(holder); 
    } else { 
// recycle the already inflated view 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    // fill data 
    holder = (ViewHolder) convertView.getTag(); 
    String s = getItem(position).toString(); 
    holder.txt.setText(itemsCopy.get(position).getSettingText()); 
    holder.settingImg.setImageResource(itemsCopy.get(position).getImgResId()); 

    return convertView; 
} 
} 

설정 카테고리 목록 내 어댑터입니다 (첫 번째는 기본보기와 두 번째 하나는 목록에있는 단일 항목의보기입니다.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
> 
<SearchView 
    android:id="@+id/searchFunction" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
</SearchView> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</ListView> 
</RelativeLayout> 

이것은 개별 항목을 나타냅니다. 목록에

<?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:layout_width="52dp" 
    android:layout_height="52dp" 
    android:id="@+id/settingCategoryImg" 
/> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="52dp" 
    android:text="" 
    android:id="@+id/settingCategoryName" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/settingCategoryImg" 
/> 
</RelativeLayout> 
+0

제거'settingsList = 위에서 getListView(); '난 당신이 초기화되는 문제가 해결 될 것입니다 생각 onCreateView''에서, 'onViewCreated'에서 numCategories도 확인하십시오. –

+0

로그 넣기. 어리석은 실수를 범하면 좋겠습니까? –

+0

그것이 효과가있다. –

답변

1

널 어댑터가 새로 고쳐지지 않도록 설정 중입니다. 다음과 같은 방법으로 초기화 부분을

점검을 주석 : 귀하가 ListFragement를 사용하여 다시 레이아웃을 팽창하는

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) 
{ 
    super.onViewCreated(view, savedInstanceState); 
    // remove the dividers from the ListView of the ListFragment 
    settingsList = getListView(); 
    settingsList.setDivider(null); 
    mItems = new ArrayList<SettingsCategories>(); 
    Resources resources = getResources(); 

    for(int c = 0; c < numCategories; c++) 
    { 
     mItems.add(new SettingsCategories(CategoryArray[c],resIds[c])); 
    } 

    // initialize and set the list adapter 
    // settingsAdapter = new SettingsAdapter(this.getActivity(), mItems); 

    setListAdapter(new SettingsAdapter(getActivity(), mItems)); 
    settingsList.setAdapter(settingsAdapter); 

} 

. 그건 좋은 생각이 아니야. 당신이 listfragment을 확장 할 때 다음 레이아웃을 팽창하는 것은 필요하고와 같은 방법 이상 수정되지 않습니다

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) 
{ 
    super.onViewCreated(view, savedInstanceState); 
    // remove the dividers from the ListView of the ListFragment 
    settingsList = getListView(); 
    settingsList.setDivider(null); 
    mItems = new ArrayList<SettingsCategories>(); 
    Resources resources = getResources(); 

    for(int c = 0; c < numCategories; c++) 
    { 
     mItems.add(new SettingsCategories(CategoryArray[c],resIds[c])); 
    } 

    // initialize and set the list adapter 
    settingsAdapter = new SettingsAdapter(this.getActivity(), mItems); 

    //setListAdapter(new SettingsAdapter(getActivity(), mItems)); 
    settingsList.setAdapter(settingsAdapter); 

} 
관련 문제