在片段gridview中无法显示任何项目或不给出任何异常?

时间:2015-05-05 08:14:21

标签: android gridview android-fragments

你好先生我使用<ion-content class="has-header"> // Content </ion-content> 来显示图像和文本列表。我在GridView适用的活动中应用了GridView,但在Fragment中适用同样的事情则不会显示任何内容。

片段代码:

public class UserChannelFragment extends Fragment {

    GridView mGridView ;
    private boolean mSearchCheck;

    public UserChannelFragment newInstance(String text){
        UserChannelFragment mFragment = new UserChannelFragment();
        Bundle mBundle = new Bundle();
        mBundle.putString(Constant.TEXT_FRAGMENT, text);
        mFragment.setArguments(mBundle);
        return mFragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub      
        View rootView = inflater.inflate(R.layout.user_channel_fragment, container, false);
        rootView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT ));

        mGridView = (GridView) rootView.findViewById(R.id.userChannelGridView) ;
        Tools.log("GRIDVIEW","before adapter");
        UserChannelAdapter adapter = new UserChannelAdapter(getActivity().getApplicationContext(),rootView);
        mGridView.setAdapter(adapter);
        Tools.log("GRIDVIEW", "after adapter set to gridview");


        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        setHasOptionsMenu(true);                                        
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        super.onCreateOptionsMenu(menu, inflater);      
        inflater.inflate(R.menu.menu, menu);

        SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.SEARCH));
        searchView.setQueryHint(this.getString(R.string.search));

        ((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text))
        .setHintTextColor(getResources().getColor(R.color.white));      
        searchView.setOnQueryTextListener(OnQuerySearchView);

        menu.findItem(Menus.ADD).setVisible(true);
        menu.findItem(Menus.UPDATE).setVisible(false);      
        menu.findItem(Menus.SEARCH).setVisible(true);       

        mSearchCheck = false;   
    }   

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub

        switch (item.getItemId()) {

        case Menus.ADD:         
            break;              

        case Menus.UPDATE:          
            break;              

        case Menus.SEARCH:
            mSearchCheck = true;
            break;
        }       
        return true;
    }   

    private OnQueryTextListener OnQuerySearchView = new OnQueryTextListener() {

        @Override
        public boolean onQueryTextSubmit(String arg0) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onQueryTextChange(String arg0) {
            // TODO Auto-generated method stub
            if (mSearchCheck){
                // implement your search here
            }
            return false;
        }
    };  
}

适配器代码:

class UserChannelItems{
     int imageId ;
    String title ;
     String path ;
    public UserChannelItems(int image,String string){
        Tools.log("GRIDVIEW","Item Constructor 1");

        this.imageId = image ; this.title = string;
    }
    public UserChannelItems(String path,String string){
        Tools.log("GRIDVIEW","Item Constructor 2");
        this.path = path ; this.title = string;
    }
    public int getImageId(){ return this.imageId ;}
    public String getTitle(){ return this.title ; }
    public String getPath(){ return this.path ; }
}
class UserChannelViewHolder{
    ImageView mImageView ;
    TextView mTextView ;
    UserChannelViewHolder(View view){
        Tools.log("GRIDVIEW","View Holder Constructor");

        mImageView = (ImageView) view.findViewById(R.id.userChannelItemImageView);
        mTextView = (TextView) view.findViewById(R.id.userChannelItemTextView) ;
    }
}


public class UserChannelAdapter extends BaseAdapter {
    Context mContext ;
    View view ;
    private ArrayList<UserChannelItems> userChannelList ;
    public UserChannelAdapter(Context context,View v){
        Tools.log("GRIDVIEW","Adapter Constructor");
        this.mContext = context ;
        this.view = v;

        userChannelList = new ArrayList<UserChannelItems>();

        for(int i=0;i<25; i++){
            UserChannelItems mUserChannelItem = new UserChannelItems(R.drawable.dir,"Folder");
            Tools.log("GRIDVIEW","set Array  "+mUserChannelItem.getTitle()+"  List "+userChannelList.size());

            userChannelList.add(mUserChannelItem);
        }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Tools.log("GRIDVIEW","getView()  call");
        View row = convertView ;
        UserChannelViewHolder mViewHolder = null ;
        if(row==null){

            LayoutInflater mLayoutInflater = (LayoutInflater) mContext.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = mLayoutInflater.inflate(R.layout.user_channel_item,parent,false);
            mViewHolder= new UserChannelViewHolder(row) ;
            row.setTag(mViewHolder);
        }
        else{
            mViewHolder= (UserChannelViewHolder) row.getTag();
        }
        UserChannelItems item = userChannelList.get(position) ;
        mViewHolder.mImageView.setImageResource(item.getImageId());
        mViewHolder.mTextView.setText(item.getTitle());
        mViewHolder.mImageView.setTag(item);
        return row;
    }
}

logcat的:

D/GRIDVIEW﹕ before adapter
D/GRIDVIEW﹕ Adapter Constructor
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 0
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 1
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 2
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 3
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 4
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 5
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 6
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 7
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 8
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 9
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 10
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 11
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 12
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 13
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 14
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 15
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 16
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 17
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 18
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 19
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 20
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 21
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 22
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 23
D/GRIDVIEW﹕ Item Constructor 1
D/GRIDVIEW﹕ set Array  Folder  List 24
D/GRIDVIEW﹕ after adapter set to gridview
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ View Holder Constructor
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ View Holder Constructor
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ View Holder Constructor
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ View Holder Constructor
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ View Holder Constructor
D/GRIDVIEW﹕ getView()  call
D/GRIDVIEW﹕ View Holder Constructor

1 个答案:

答案 0 :(得分:0)

mGridView = (GridView) rootView.findViewById(R.id.userChannelGridView) ; 

使用了这个

mGridView =(GridView)root.findViewById(R.id.gridview);