Android Adapters和DialogView-不确定如何构建适配器
因此,我试图用从API获得的文件夹列表填充对话框,一旦用户单击文件夹,我会再次用其子文件夹等填充对话框。但我不太确定所有内容是如何组合在一起的。到目前为止,对话框显示,现在我需要添加实际内容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
@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。