Android Adapters和DialogView-不确定如何构建适配器

Android Adapters和DialogView-不确定如何构建适配器,android,android-adapter,android-adapterview,Android,Android Adapter,Android Adapterview,因此,我试图用从API获得的文件夹列表填充对话框,一旦用户单击文件夹,我会再次用其子文件夹等填充对话框。但我不太确定所有内容是如何组合在一起的。到目前为止,对话框显示,现在我需要添加实际内容 @Override protected View onCreateDialogView() { LayoutInflater inflater = ((SettingsActivity) ctx).getLayoutInflater(); View vw = inflater.infl

因此,我试图用从API获得的文件夹列表填充对话框,一旦用户单击文件夹,我会再次用其子文件夹等填充对话框。但我不太确定所有内容是如何组合在一起的。到目前为止,对话框显示,现在我需要添加实际内容

 @Override
 protected View onCreateDialogView() {

    LayoutInflater inflater = ((SettingsActivity) ctx).getLayoutInflater();
    View vw = inflater.inflate(R.layout.channel_content_view, null);
    ListView lv = (ListView) vw.findViewById(android.R.id.list);
    File[] files = ChannelHandler.getChannels();
    HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(ctx, files);
    lv.setAdapter(adapter);
    return vw;
 }
我不知道那个隐藏的类通道适配器应该是什么样子

这就是我目前的情况:

package com.example.tvrplayer;

import java.io.File;

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

public class HiddenChannelsListAdapter extends BaseAdapter {
    public HiddenChannelsListAdapter(Context ctx, File[] files) {
        // TODO Auto-generated constructor stub
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        View view = null;
        Log.i("ADAPTER", "Hello");
        return view;
    }

}
当我现在尝试打开对话框时,它会得到一个NullPointerException,这是因为适配器除了返回null之外什么都没有做

适配器返回什么?它在哪里退货?我现在很困惑

试着这样做

public class ContactListCursorAdapter extends BaseAdapter {

/** Remember our context so we can use it when constructing views. */
private Context mContext;

/**
* Hold onto a copy of the entire Contact List.
*/
private List<ContactEntry> mItems = new ArrayList<ContactEntry>();

public ContactListCursorAdapter(Context context, ArrayList<ContactEntry> items) {
     mContext = context;
     mItems = items;
}

public int getCount() {
     return mItems .size();
}

public Object getItem(int position) {
     return mItems .get(position);
}

 /** Use the array index as a unique id. */
public long getItemId(int position) {
     return position;
}

/**
* @param convertView
*            The old view to overwrite, if one is passed
* @returns a ContactEntryView that holds wraps around an ContactEntry
*/
public View getView(int position, View convertView, ViewGroup parent) {
    ContactEntryView btv;
    if (convertView == null) {
         btv = new ContactEntryView(mContext, mShow.get(position));
    } else {
         btv = (ContactEntryView) convertView;
         String name = mShow.get(position).getName();
         btv.setNameText(name);
         String number = mShow.get(position).getNumber();
         if (number != null) {
              btv.setNumberText("Mobile: " + mShow.get(position).getNumber());
         }
    }
        return btv;
}
}
公共类ContactListCursorAdapter扩展BaseAdapter{
/**记住我们的上下文,以便在构建视图时使用它*/
私有上下文;
/**
*保留整个联系人列表的副本。
*/
private List mItems=new ArrayList();
public ContactListCursorAdapter(上下文、ArrayList项){
mContext=上下文;
mItems=项目;
}
public int getCount(){
返回mItems.size();
}
公共对象getItem(int位置){
返回mItems.get(位置);
}
/**将数组索引用作唯一id*/
公共长getItemId(int位置){
返回位置;
}
/**
*@param-convertView
*要覆盖的旧视图(如果已传递)
*@返回一个ContactEntryView,该视图包含ContactEntry的换行符
*/
公共视图getView(int位置、视图转换视图、视图组父视图){
ContactEntryView btv;
if(convertView==null){
btv=新联系人视图(mContext,mShow.get(position));
}否则{
btv=(ContactEntryView)convertView;
String name=mShow.get(position.getName();
btv.setNameText(名称);
String number=mShow.get(position.getNumber();
如果(数字!=null){
btv.setNumberText(“手机:+mShow.get(position.getNumber());
}
}
返回btv;
}
}

在本例中,我不会返回文件[]列表,而是返回JSONArray。