Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用BaseAdapter的ListView未显示在活动中_Java_Android_Listview - Fatal编程技术网

Java 使用BaseAdapter的ListView未显示在活动中

Java 使用BaseAdapter的ListView未显示在活动中,java,android,listview,Java,Android,Listview,我试图在活动中使用baseadapter来扩大列表。这张单子并没有膨胀。从类中实现的日志来看,getView()函数甚至不执行。这是密码- public class CallLog extends Activity { ListView logList; List mList; Context mCtx; ArrayList<String> logName; ArrayList<String> logNumber; Arra

我试图在活动中使用baseadapter来扩大列表。这张单子并没有膨胀。从类中实现的日志来看,
getView()
函数甚至不执行。这是密码-

public class CallLog extends Activity {
    ListView logList;
    List mList;
    Context mCtx;
    ArrayList<String> logName;
    ArrayList<String> logNumber;
    ArrayList<String> logTime;
    @Override
    protected  void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reject_call_log);
        mCtx = getApplicationContext();
        ListView logList = (ListView) findViewById(R.id.log_list);
        mList = new List(mCtx, R.layout.log_row);
        logList.setAdapter(mList);
        SharedPreferences savedLogName = PreferenceManager.getDefaultSharedPreferences(mCtx);
        SharedPreferences savedLogNumber = PreferenceManager.getDefaultSharedPreferences(mCtx);
        SharedPreferences savedLogTime = PreferenceManager.getDefaultSharedPreferences(mCtx);
        try{
            logName = new ArrayList(Arrays.asList(TextUtils.split(savedLogName.getString("logName", null), ",")));
            logNumber = new ArrayList(Arrays.asList(TextUtils.split(savedLogNumber.getString("logNumber", null), ",")));
            logTime = new ArrayList(Arrays.asList(TextUtils.split(savedLogTime.getString("logTime", null), ",")));
            Collections.reverse(logName);
            Collections.reverse(logNumber);
            Collections.reverse(logTime);
        }catch(NullPointerException e){
            e.printStackTrace();
            //TextView noLog = (TextView)findViewById(R.id.no_log);
        }

    }

    public class List extends BaseAdapter {
        LayoutInflater mInflater;
        TextView nameText;
        TextView numberText;
        TextView timeText;
        int timePos = 1;
        public List(Context context, int resource) {
        }


        @Override
        public int getCount() {
            return 0;
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (convertView == null) {
                v = mInflater.inflate(R.layout.row, null);
            }
            nameText = (TextView) v.findViewById(R.id.log_name);
            numberText = (TextView) v.findViewById(R.id.log_number);
            timeText = (TextView) v.findViewById(R.id.log_time);
            nameText.setText(logName.get(position));
            numberText.setText(logNumber.get(position));
            timeText.setText(logTime.get(timePos) + logTime.get(timePos+1));
            Log.d("RejectCall", "ListView");
            timePos+=2;
            return v;
        }
    }
} 
公共类调用日志扩展活动{
ListView日志列表;
列表列表;
上下文mCtx;
ArrayList日志名;
arraylistlognumber;
ArrayList对数时间;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.reject\u call\u log);
mCtx=getApplicationContext();
ListView日志列表=(ListView)findViewById(R.id.log\u列表);
mList=新列表(mCtx,R.layout.log_行);
logList.setAdapter(mList);
SharedReferences savedLogName=PreferenceManager.GetDefaultSharedReferences(mCtx);
SharedReferences savedLogNumber=PreferenceManager.GetDefaultSharedReferences(mCtx);
SharedReferences savedLogTime=PreferenceManager.GetDefaultSharedReferences(mCtx);
试一试{
logName=newarraylist(Arrays.asList(TextUtils.split(savedLogName.getString(“logName”,null),“,”)));
logNumber=newarraylist(Arrays.asList(TextUtils.split(savedLogNumber.getString(“logNumber”,null)、“,”)));
logTime=newarraylist(Arrays.asList(TextUtils.split(savedLogTime.getString(“logTime”,null),“,”)));
收藏。反面(logName);
收款。反向(对数);
收集。反向(对数时间);
}捕获(NullPointerException e){
e、 printStackTrace();
//TextView noLog=(TextView)findViewById(R.id.no_log);
}
}
公共类列表扩展了BaseAdapter{
拉平机;
文本视图名称文本;
文本视图编号文本;
文本查看时间文本;
int-timePos=1;
公共列表(上下文,int资源){
}
@凌驾
public int getCount(){
返回0;
}
@凌驾
公共对象getItem(int i){
返回null;
}
@凌驾
公共长getItemId(int i){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
if(convertView==null){
v=最小充气量(R.layout.row,空);
}
nameText=(TextView)v.findviewbyd(R.id.log\u name);
numberText=(TextView)v.findViewById(R.id.log\u编号);
timeText=(TextView)v.findViewById(R.id.log\u time);
nameText.setText(logName.get(position));
numberText.setText(logNumber.get(position));
timeText.setText(logTime.get(timePos)+logTime.get(timePos+1));
Log.d(“拒绝调用”、“列表视图”);
timePos+=2;
返回v;
}
}
} 
哪里出了问题?还有,有没有更好的方法来完成我想做的事情?

您的getItem()和getCount()尚未实现。如果您想要任何类型的适配器为列表工作,则需要实现这些适配器。您的列表也没有保存任何实际数据,因此getItem()没有任何设置


为上述两个函数设置适当的实现后,不要忘记在适配器中调用notifiyDataSetChanged()。

请替换以下代码:

@Override
    public int getCount() {
        return 0;
    }

@Override
    public int getCount() {
        return logName.size();
    }
As列表视图仅显示此方法返回的行数,现在返回0

在获取arraylist中的数据后,请使用adapter.notifyDataSetChanged()通知列表视图。


设置适配器后,在数组列表中填充数据时,必须调用notifyDataSetChanged()。因此,要通知列表视图数据已更改,您必须调用notify方法(如上所述)

Hi,请您解释一下“您的列表也没有保存任何实际数据,因此getItem()没有任何设置”的意思。啊,我想我明白您的意思了。变量logName、logNumber和logTime确实包含数据。使用SharedReferences接收数据并将其存储在这些变量中。您认为
public int getCount(){return 0;}
的确切功能是什么?返回任何变量logName、logNumber logTime的计数(它们都包含相同数量的数据)。我已经用logName.size()更正了那里的代码。我第一次使用列表。仍然是初学者。但是如何返回0行?变量logName、logNumber和logTime保存数据,我想在一行中显示它们。为此,我膨胀了一个列表,然后用setText传入这些变量。如果我错了,请纠正我。@Slay,是的,您正在将所有数据传递给适配器:但这有两个问题:1。将适配器设置为“列表视图”后,您将向列表添加数据,因此列表视图不了解数据。2.BaseAdapter重写方法getCount(),在列表视图内部调用它并获取它必须显示的行数,因此我们必须返回数组列表的大小。