2014-06-09 146 views
0

我试图使用自定义ListViewFragment也使用自定义CursorAdapter,但到目前为止我无法显示ListView自定义ListView不显示

我在做什么错了?

Fragment

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 

public class MyListFragment extends Fragment { 

    private CustomcursorAdapter mCustomcursorAdapter; 
    private ListView mListView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
          ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_mylist, container, false); 

     //CursorAdapter 
     mCustomcursorAdapter = new CustomcursorAdapter(view.getContext(), null, 0); 

     //ListView 
     mListView = (ListView) view.findViewById(R.id.itemslist); 
     mListView.setAdapter(mCustomcursorAdapter); 

     return view; 
    } 

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

我的MainActivity

import android.app.Activity; 
import android.app.FragmentManager; 
import android.os.Bundle; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FragmentManager fragmentManager = getFragmentManager(); 
     if (fragmentManager.findFragmentById(android.R.id.content) == null) { 
      MyListFragment myListFragment = new MyListFragment(); 
      fragmentManager.beginTransaction().add(android.R.id.content, myListFragment).commit(); 
     } 
    } 
} 

CustomcursorAdapter

import android.content.Context; 
import android.database.Cursor; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.CursorAdapter; 
import android.widget.TextView; 

public class CustomcursorAdapter extends CursorAdapter { 

    private LayoutInflater mLayoutInflater; 

    public CustomcursorAdapter(Context context, Cursor c, int flags) { 
     super(context, c, flags); 
     mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     TextView textview = (TextView) view.findViewById(R.id.itemTextView); 
     textview.setText(cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_NAME_ITEM))); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     return mLayoutInflater.inflate(R.layout.itemslist, parent, false); 
    } 
} 
+0

后CustomcursorAdapter –

+0

@Rod_Algonquin自定义的CursorAdapter贴! – ivoencarnacao

+0

@ivoencarnacao您使用空游标初始化您的适配器 - 无数据>无需显示>无列表。 – nitzanj

回答

0

下面是我在做什么。

在片段,我在onActivityCreated(所做的一切)是这样的:

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

     View campainview = inflater.inflate(R.layout.campaignview, container, false); 

     return campainview; 
    } 

    public void onActivityCreated(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onActivityCreated(savedInstanceState); 

      String[] s = {"a","b","c","d","b","c","d","b","c","d","b","c","d","b","c","d","b","c","d"}; 

      ArrayList<String> aList = new ArrayList<String>(); 

      for(String s1:s){ 

       aList.add(s1); 

      } 

      ListView lv1= (ListView)getActivity().findViewById(R.id.campaignListView); 
      lv1.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,aList)); 

     } 

这项工作对我的,基本上你可以做的是,而不是使用该适配器iv'e使用,你可以使用你的游标适配器。如果它仍然无法正常工作,那么问题出在游标适配器上,或者可能是来自数据库的值为空。

让我知道这是工作..好运.. :)