Fragmentのカスタムアダプタを使用したListView

アレックスメンサック

fragmnetのカスタムアダプタ(baseAdapter)でListViewを使用しようとしています。

このコードをMainActivity内で直接使用すると、すべてが正常に機能しますが、これをフラグメントで使用すると、クラッシュしませんでしたが、何も表示されず、単なる空白のフラグメントです。また、単純なarrayAdapterを使用して1つのtextViewをフラグメントにバインドしようとすると、正常に機能したため、問題はカスタムアダプター内にあると思います。

ListViewが表示されないのはなぜですか?

私のコード:HomeFragment.java

package com.example.alex.viewlist;

import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;

import java.util.ArrayList;
import java.util.List;


public class HomeFragment extends Fragment {

    ImageLoader mImageLoader;
    NetworkImageView mNetworkImageView;

    public  MainActivity activity = (MainActivity) getActivity();

    public HomeFragment() {
        // Required empty public constructor
    }

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

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View V = inflater.inflate(R.layout.fragment_home, container, false);

        CodeLearnAdapter chapterListAdapter = new CodeLearnAdapter();
        ListView codeLearnLessons = (ListView) V.findViewById(R.id.listView);
        codeLearnLessons.setAdapter(chapterListAdapter);

        return inflater.inflate(R.layout.fragment_home, container, false);
    }

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

    }

    public class codeLearnChapter {
        String mURL;
        String mName;
    }

    String[] ListURL = new String[] {"http://meteo.profi-net.sk/webcams/BIELAPUT-l.jpg",
            "http://meteo.profi-net.sk/webcams/Priehyba-l.jpg",
            "http://meteo.profi-net.sk/webcams/JASNA_CHOPOK-l.jpg",
            "http://meteo.profi-net.sk/webcams/LM_JASNA_LUKOVA-l.jpg",
            "http://meteo.profi-net.sk/webcams/brhliska-l.jpg"};

    String[] ListName = new String[] {"Biela púť",
            "Priehyba",
            "Chopok",
            "Luková",
            "Grand Jet"};

    public List<codeLearnChapter> getDataForListView()
    {
        List<codeLearnChapter> codeLearnChaptersList = new ArrayList<codeLearnChapter>();

        for(int i=0;i<ListURL.length;i++)
        {

            codeLearnChapter chapter = new codeLearnChapter();
            chapter.mURL = ListURL[i];
            chapter.mName = ListName[i];
            codeLearnChaptersList.add(chapter);
        }

        return codeLearnChaptersList;

    }

    public class CodeLearnAdapter extends BaseAdapter {

        List<codeLearnChapter> codeLearnChapterList = getDataForListView();
        @Override
        public int getCount() {
            return codeLearnChapterList.size();
        }

        @Override
        public codeLearnChapter getItem(int arg0) {
            return codeLearnChapterList.get(arg0);
        }

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

        @Override
        public View getView(int arg0, View arg1, ViewGroup arg2) {

            if(arg1==null)
            {
                LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                arg1 = inflater.inflate(R.layout.view_list, arg2,false);
            }

            TextView chapterName = (TextView)arg1.findViewById(R.id.textView1);

            codeLearnChapter chapter = codeLearnChapterList.get(arg0);

            String url = chapter.mURL;
            chapterName.setText(chapter.mName);

            mNetworkImageView = (NetworkImageView) arg1.findViewById(R.id.NetView);

            // Get the ImageLoader through your singleton class.
            mImageLoader = VolleySingleton.getInstance(activity).getImageLoader();

            // Set the URL of the image that should be loaded into this view, and
            // specify the ImageLoader that will be used to make the request.
            mNetworkImageView.setImageUrl(url, mImageLoader);
            return arg1;
        }

    }
}

Fragment_home.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context="com.example.alex.viewlist.HomeFragment">

<ListView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/listView"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

viewList.xml

<view
android:layout_width="fill_parent"
android:layout_height="wrap_content"
class="android.support.v7.widget.CardView"
android:id="@+id/view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingLeft="4dp"
android:paddingTop="4dp"
android:paddingRight="4dp"
android:paddingBottom="4dp">
<RelativeLayout
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">

    <view
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        class="com.android.volley.toolbox.NetworkImageView"
        android:id="@+id/NetView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:layout_gravity="left|bottom"
        android:textSize="22dp"
        android:layout_below="@+id/NetView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:background="#ffd4d4d4"
        android:textColor="#ff272727"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="20dp"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="2dp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"/>
</RelativeLayout>

編集:

OnCreateViewメソッドを補充して返す場合:return V; NPEエラーが発生します:

02-27 20:52:15.955  28063-28063/com.example.alex.viewlist E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.alex.viewlist, PID: 28063
java.lang.NullPointerException
        at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:43)
        at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:78)
        at com.example.alex.viewlist.VolleySingleton.<init>(VolleySingleton.java:18)
        at com.example.alex.viewlist.VolleySingleton.getInstance(VolleySingleton.java:39)
        at com.example.alex.viewlist.HomeFragment$CodeLearnAdapter.getView(HomeFragment.java:133)
        at android.widget.AbsListView.obtainView(AbsListView.java:2263)
        at android.widget.ListView.makeAndAddView(ListView.java:1790)
        at android.widget.ListView.fillDown(ListView.java:691)
        at android.widget.ListView.fillFromTop(ListView.java:752)
        at android.widget.ListView.layoutChildren(ListView.java:1630)
        at android.widget.AbsListView.onLayout(AbsListView.java:2091)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
        at android.view.View.layout(View.java:14817)
        at android.view.ViewGroup.layout(ViewGroup.java:4631)
        at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2066)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1823)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1079)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5784)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:774)
        at android.view.Choreographer.doCallbacks(Choreographer.java:587)
        at android.view.Choreographer.doFrame(Choreographer.java:550)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:760)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
user370305

List<codeLearnChapter> codeLearnChapterList = getDataForListView();この行でgetDataForListView()はリストデータが入力されないため、コンストラクターの初期化時にこれを呼び出す必要があります。

カスタムアダプタにコンストラクタを追加するだけです CodeLearnAdapter

お気に入り

List<codeLearnChapter> codeLearnChapterList ;

public CodeLearnAdapter () {

       codeLearnChapterList = getDataForListView();
}

そして、それは常に新しく作成されたビューを膨らませるので、それを含むリストがないのでonCreateViewあなたは戻る必要がありますView V

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View V = inflater.inflate(R.layout.fragment_home, container, false);

    CodeLearnAdapter chapterListAdapter = new CodeLearnAdapter();
    ListView codeLearnLessons = (ListView) V.findViewById(R.id.listView);
    codeLearnLessons.setAdapter(chapterListAdapter);

    return V;
}

スタックトレースから、mImageLoaderアクティビティがコンテキストの参照を取得しないため、nullになる可能性があるのではないかと疑っています。

//シングルトンクラスを介してImageLoaderを取得します。

mImageLoader = VolleySingleton.getInstance(activity).getImageLoader();

//シングルトンクラスを介してImageLoaderを取得します。

mImageLoader = VolleySingleton.getInstance(getActivity()).getImageLoader();

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

AndroidStudioのカスタムアダプターを使用したカスタムListView

分類Dev

カスタムアダプタを使用したListViewのカスタム行

分類Dev

CheckBoxを含むカスタムアダプターを使用したListview

分類Dev

カスタムアダプタを使用したListViewが表示されない

分類Dev

カスタム アダプターを使用した Android ListView は、最後の項目のみを表示します

分類Dev

SearchViewとカスタムアダプタを使用したListViewのフィルタリング

分類Dev

ListViewの複数のビュー用のカスタムAndroidアダプターを使用したArrayIndexOutOfBoundsException

分類Dev

カスタムリストアダプタを使用したListViewの保存と復元

分類Dev

カスタムアダプタを使用して、ListViewのアイテムをクリックします

分類Dev

カスタムアダプタを使用して、ListViewのアイテムをクリックします

分類Dev

カスタムアダプタを使用したMultiAutoCompleteTextView(BaseAdapter)

分類Dev

setOnitemClickを使用したカスタムアダプタ

分類Dev

android:カスタムアダプターを使用したAutoCompleteTextView

分類Dev

カスタムアダプタのListViewを反復処理します

分類Dev

カスタムアダプタを使用したListView:一部のアイテムは非表示になっています

分類Dev

カスタムアダプタを使用してListviewランタイムにデータを追加する

分類Dev

カスタムListViewアダプタを使用してフラグメントListViewを更新する

分類Dev

カスタムListView用アダプタ

分類Dev

セクション ヘッダーを含むカスタム リスト アダプターを使用した ListView のカスタム フィルタリング

分類Dev

カスタムアダプタがListViewにデータを表示しない

分類Dev

カスタムアダプタを使用したリストビューの画像とテキスト

分類Dev

カスタムアダプタを使用するときにAndroidのListViewからデータを取得する方法

分類Dev

ember-data-url-templatesを使用したEmberJSカスタムアダプター

分類Dev

カスタムリストアダプタを使用してlistViewが空であることを示す方法

分類Dev

カスタムリストアダプタを使用してlistViewが空であることを示す方法

分類Dev

カスタムアダプタと方向を使用してListViewプログラムのnullpointer例外を受信しますか?

分類Dev

特定の行を揃えるカスタム アダプターを備えた Android ListView

分類Dev

android:カスタムアダプタを使用してListView内にSearchViewを追加する

分類Dev

ContextMenuがカスタムアダプタを使用してListViewから行を削除できない

Related 関連記事

  1. 1

    AndroidStudioのカスタムアダプターを使用したカスタムListView

  2. 2

    カスタムアダプタを使用したListViewのカスタム行

  3. 3

    CheckBoxを含むカスタムアダプターを使用したListview

  4. 4

    カスタムアダプタを使用したListViewが表示されない

  5. 5

    カスタム アダプターを使用した Android ListView は、最後の項目のみを表示します

  6. 6

    SearchViewとカスタムアダプタを使用したListViewのフィルタリング

  7. 7

    ListViewの複数のビュー用のカスタムAndroidアダプターを使用したArrayIndexOutOfBoundsException

  8. 8

    カスタムリストアダプタを使用したListViewの保存と復元

  9. 9

    カスタムアダプタを使用して、ListViewのアイテムをクリックします

  10. 10

    カスタムアダプタを使用して、ListViewのアイテムをクリックします

  11. 11

    カスタムアダプタを使用したMultiAutoCompleteTextView(BaseAdapter)

  12. 12

    setOnitemClickを使用したカスタムアダプタ

  13. 13

    android:カスタムアダプターを使用したAutoCompleteTextView

  14. 14

    カスタムアダプタのListViewを反復処理します

  15. 15

    カスタムアダプタを使用したListView:一部のアイテムは非表示になっています

  16. 16

    カスタムアダプタを使用してListviewランタイムにデータを追加する

  17. 17

    カスタムListViewアダプタを使用してフラグメントListViewを更新する

  18. 18

    カスタムListView用アダプタ

  19. 19

    セクション ヘッダーを含むカスタム リスト アダプターを使用した ListView のカスタム フィルタリング

  20. 20

    カスタムアダプタがListViewにデータを表示しない

  21. 21

    カスタムアダプタを使用したリストビューの画像とテキスト

  22. 22

    カスタムアダプタを使用するときにAndroidのListViewからデータを取得する方法

  23. 23

    ember-data-url-templatesを使用したEmberJSカスタムアダプター

  24. 24

    カスタムリストアダプタを使用してlistViewが空であることを示す方法

  25. 25

    カスタムリストアダプタを使用してlistViewが空であることを示す方法

  26. 26

    カスタムアダプタと方向を使用してListViewプログラムのnullpointer例外を受信しますか?

  27. 27

    特定の行を揃えるカスタム アダプターを備えた Android ListView

  28. 28

    android:カスタムアダプタを使用してListView内にSearchViewを追加する

  29. 29

    ContextMenuがカスタムアダプタを使用してListViewから行を削除できない

ホットタグ

アーカイブ