9

ListFragmentに使用するカスタムArrayAdapterを作成しようとしています。現在、ListFragmentには何も表示されていませんが、TextViewという断片番号は除きます。私はアダプタのgetView()メソッドにブレークポイントを入れて呼び出されていません。私は呼び出されない理由を探し、ListViewが隠れていると思う人がいるので、layout_heightwrap_contentに変更しようとしましたが、うまくいかなかったのです。 http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.htmlListFragment内のカスタムArrayAdapter

ListFragment:

public class HomeFragment extends ListFragment implements FragmentTitle 
{ 
private int mNum = 0; 
private String mTitle = "Home"; 
private ListView mListView; 
private MyArrayAdapter mAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
    InfoContainer temp = new InfoContainer("test1", "test2"); 
    mAdapter = new MyArrayAdapter(getActivity(), android.R.id.list, temp); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View v1 = inflater.inflate(R.layout.fragment_pager_list, container, false); 
    TextView tv = (TextView) v1.findViewById(R.id.text); 
    tv.setText("Fragment #" + mNum); 
    mListView = (ListView) v1.findViewById(android.R.id.list); 
    return v1; 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 
    mListView.setAdapter(mAdapter); 
} 

@Override 
public void onListItemClick(ListView l, View v, int position, long id) 
{ 
    Log.i("HomeFragment", "Item clicked: " + id); 
} 

public CharSequence getTitle() 
{ 
    return mTitle; 
} 

} 

ArrayAdapter:

public class MyArrayAdapter extends ArrayAdapter<InfoContainer> 
{ 
Context mContext; 
InfoContainer data; 

public MyArrayAdapter(Context context, int textViewResourceId, InfoContainer temp) 
{ 
    super(context, textViewResourceId); 
    mContext = context; 
    this.data = temp; 
} 

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

    if(row == null) 
    { 
     LayoutInflater inflater = ((Activity)mContext).getLayoutInflater(); 
     row = inflater.inflate(R.id.pager, parent, false); 
     holder.v1 = (TextView) row.findViewById(R.id.listview_name); 
     holder.v2 = (TextView) row.findViewById(R.id.listview_data); 
     row.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) row.getTag(); 
    } 
    InfoContainer info = data; 
    holder.v1.setText(info.name); 
    holder.v2.setText(info.text); 
    return row; 
} 

public static class ViewHolder 
{ 
    TextView v1; 
    TextView v2; 
} 

} 

fragment_pager_list.xml:

また、私はこの開発者のページからコードを追ってきました

私は問題なく前にカスタムArrayAdaptersを作っています。そのため、ListFragmentで動作させる方法がないのですか?

答えて

6

解決策は、getCount()が私のArrayAdapterで0を返していたことです。だから私はちょうどmAdapter.add(temp)とその後mAdapter.notifyDataSetChanged()を使用し、それは働いた。私はまた、row = inflater.inflate(R.id.pager, parent, false);row = inflater.inflate(R.layout.listview_row, parent, false);

+1

に変更しなければならなかった。私は同じ問題を抱えていて、実際にgetCount()に入っていました。拡張クラスではオーバーロードされたアイテムを使用しないので、その論理的なので、サイズが分かりません。 –

関連する問題