java - 使用 BaseAdapter 的 ListView 未显示在 Activity 中

标签 java android listview

我正在尝试在 Activity 中使用 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;
        }
    }
} 

哪里出了问题?另外,有没有更好的方法来完成我想做的事情?

最佳答案

请替换以下代码:

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


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

ListView 仅显示此方法返回的行数,而现在您返回 0;

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

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

关于java - 使用 BaseAdapter 的 ListView 未显示在 Activity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26492250/

相关文章:

java - 多次尝试修复 : Malformed input or input contains unmappable chacraters 后,Eclipse 中出现连续 Git 错误

java - 基本网络.performRequest : Unexpected response code 422

Android Google Maps Direction Api - Api key 限制不起作用

android - 使用 XML 指定 ListView(或其他类似组件)的元素

android - 更改 ArrayAdapter ListView Android 中的特定行

java - 为运行 java 镜像的 pod 启用其余通信

java - 如何从服务器请求中获取文件名?

java - 使用DataInputStream接收文件信息并写入

android - Retrofit 中的@Query 和@path 有什么区别?

java - Choreographer : Skipped 53 frames! 应用程序可能在其主线程上做了太多工作